librpc: Add support for struct timeval
authorVolker Lendecke <vl@samba.org>
Thu, 24 Nov 2011 08:49:19 +0000 (09:49 +0100)
committerJeremy Allison <jra@samba.org>
Fri, 2 Dec 2011 21:43:05 +0000 (22:43 +0100)
librpc/ndr/libndr.h
librpc/ndr/ndr_basic.c

index 95e6573748d84afb67b4e12decd37b7f2645b0cb..9c26befdf73f2bca7003733ce6ba4e8dcd03c123 100644 (file)
@@ -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__ */
index 0e209f8eedad381679736cf1e5f704607bfaab67..7b164385d47482a15d0ffbba974069c44d5e4c03 100644 (file)
@@ -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);
+}