about summary refs log tree commit homepage
path: root/packaddr.c
diff options
context:
space:
mode:
Diffstat (limited to 'packaddr.c')
-rw-r--r--packaddr.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/packaddr.c b/packaddr.c
new file mode 100644
index 0000000..75450d2
--- /dev/null
+++ b/packaddr.c
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2012-2013, Eric Wong <normalperson@yhbt.net>
+ * License: GPLv3 or later (see COPYING for details)
+ */
+#include "cmogstored.h"
+
+void mog_packaddr_read(struct mog_packaddr *mpa,
+                        struct sockaddr **sa, socklen_t *salen)
+{
+        switch (mpa->as.sa_family) {
+        case AF_INET:
+                *salen = (socklen_t)sizeof(struct sockaddr_in);
+                *sa = (struct sockaddr *)&mpa->as.in4;
+                return;
+        case AF_INET6:
+                *salen = (socklen_t)sizeof(struct sockaddr_in6);
+                *sa = mog_sockaddr_sa(mpa->as.msa.ptr);
+                return;
+        }
+        assert(0 && "unrecognized sa_family" && mpa->as.sa_family);
+}