diff options
Diffstat (limited to 'packaddr.c')
-rw-r--r-- | packaddr.c | 21 |
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); +} |