summaryrefslogtreecommitdiffstats
path: root/librpc/ndr
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2011-11-24 09:49:19 +0100
committerJeremy Allison <jra@samba.org>2011-12-02 22:43:05 +0100
commit27d95cc8a637a226a20eaac9da7c0dc4d8239f88 (patch)
tree652836f4ba2a9fb0f93e83285ad342387068476d /librpc/ndr
parentde1cd125ade49ab62c0585740e6af66c384d419b (diff)
downloadsamba-27d95cc8a637a226a20eaac9da7c0dc4d8239f88.tar.gz
samba-27d95cc8a637a226a20eaac9da7c0dc4d8239f88.tar.xz
samba-27d95cc8a637a226a20eaac9da7c0dc4d8239f88.zip
librpc: Add support for struct timeval
Diffstat (limited to 'librpc/ndr')
-rw-r--r--librpc/ndr/libndr.h10
-rw-r--r--librpc/ndr/ndr_basic.c31
2 files changed, 41 insertions, 0 deletions
diff --git a/librpc/ndr/libndr.h b/librpc/ndr/libndr.h
index 95e6573748d..9c26befdf73 100644
--- a/librpc/ndr/libndr.h
+++ b/librpc/ndr/libndr.h
@@ -636,5 +636,15 @@ _PUBLIC_ enum ndr_err_code ndr_pull_timespec(struct ndr_pull *ndr,
_PUBLIC_ void ndr_print_timespec(struct ndr_print *ndr, const char *name,
const struct timespec *t);
+_PUBLIC_ enum ndr_err_code ndr_push_timeval(struct ndr_push *ndr,
+ int ndr_flags,
+ const struct timeval *t);
+_PUBLIC_ enum ndr_err_code ndr_pull_timeval(struct ndr_pull *ndr,
+ int ndr_flags,
+ struct timeval *t);
+_PUBLIC_ void ndr_print_timeval(struct ndr_print *ndr, const char *name,
+ const struct timeval *t);
+
+
#endif /* __LIBNDR_H__ */
diff --git a/librpc/ndr/ndr_basic.c b/librpc/ndr/ndr_basic.c
index 0e209f8eeda..7b164385d47 100644
--- a/librpc/ndr/ndr_basic.c
+++ b/librpc/ndr/ndr_basic.c
@@ -1369,3 +1369,34 @@ _PUBLIC_ void ndr_print_timespec(struct ndr_print *ndr, const char *name,
ndr->print(ndr, "%-25s: %s.%ld", name, timestring(ndr, t->tv_sec),
(long)t->tv_nsec);
}
+
+_PUBLIC_ enum ndr_err_code ndr_push_timeval(struct ndr_push *ndr,
+ int ndr_flags,
+ const struct timeval *t)
+{
+ NDR_PUSH_CHECK_FLAGS(ndr, ndr_flags);
+ NDR_CHECK(ndr_push_hyper(ndr, ndr_flags, t->tv_sec));
+ NDR_CHECK(ndr_push_uint32(ndr, ndr_flags, t->tv_usec));
+ return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ enum ndr_err_code ndr_pull_timeval(struct ndr_pull *ndr,
+ int ndr_flags,
+ struct timeval *t)
+{
+ uint64_t secs;
+ uint32_t usecs;
+ NDR_PULL_CHECK_FLAGS(ndr, ndr_flags);
+ NDR_CHECK(ndr_pull_hyper(ndr, ndr_flags, &secs));
+ NDR_CHECK(ndr_pull_uint32(ndr, ndr_flags, &usecs));
+ t->tv_sec = secs;
+ t->tv_usec = usecs;
+ return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_timeval(struct ndr_print *ndr, const char *name,
+ const struct timeval *t)
+{
+ ndr->print(ndr, "%-25s: %s.%ld", name, timestring(ndr, t->tv_sec),
+ (long)t->tv_usec);
+}