diff options
author | Eric Wong <normalperson@yhbt.net> | 2013-06-29 00:39:49 +0000 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2013-07-10 00:55:59 +0000 |
commit | fef978104cf134dc6629115456b27dfa2856ded7 (patch) | |
tree | 653b137bea3511b6741e9612894459462226398c /packaddr.h | |
parent | 71849ca64134b0cfa197fc4b1ce8fc10c7fb5d98 (diff) | |
download | cmogstored-fef978104cf134dc6629115456b27dfa2856ded7.tar.gz |
"struct sockaddr" turns out to be smaller than "struct sockaddr_in6", so we can avoid complicated casting and just add that to the union. We continue avoiding "struct sockaddr_storage", however, as it is unnecessarily large for our needs.
Diffstat (limited to 'packaddr.h')
-rw-r--r-- | packaddr.h | 11 |
1 files changed, 1 insertions, 10 deletions
@@ -3,22 +3,13 @@ * License: GPLv3 or later (see COPYING for details) */ -/* - * avoid sockaddr_storage since that bigger than we need - * This is meant to be cast to "struct sockaddr" via mog_sockaddr_sa - */ union mog_sockaddr { struct sockaddr_in in; struct sockaddr_in6 in6; + struct sockaddr sa; uint8_t bytes[sizeof(struct sockaddr_in6)]; }; -static inline struct sockaddr *mog_sockaddr_sa(union mog_sockaddr *msa) -{ - assert((void *)msa == (void *)&msa->bytes); - return (struct sockaddr *)msa; -} - /* this is the relevant part we may store in "struct mog_fd" */ struct mog_packaddr { sa_family_t sa_family; |