aboutsummaryrefslogtreecommitdiffstats
path: root/sockaddr_util.c
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2011-09-06 09:45:27 +0200
committerNatanael Copa <ncopa@alpinelinux.org>2011-09-06 09:45:27 +0200
commit91774e47e23c83aa3df901adc167ab4592f87a22 (patch)
treef2a4640454224881b6107923a808c9c5e0274dc2 /sockaddr_util.c
parent57abc32e14ac85edf71203013e73abccbd1b922b (diff)
downloadpingu-91774e47e23c83aa3df901adc167ab4592f87a22.tar.bz2
pingu-91774e47e23c83aa3df901adc167ab4592f87a22.tar.xz
pingu_iface: bind to address instead of oif
Seems like ip rule does not work with source address unless we bind to address
Diffstat (limited to 'sockaddr_util.c')
-rw-r--r--sockaddr_util.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/sockaddr_util.c b/sockaddr_util.c
index a9e2755..57487c1 100644
--- a/sockaddr_util.c
+++ b/sockaddr_util.c
@@ -86,3 +86,17 @@ char *sockaddr_to_string(union sockaddr_any *sa, char *str, size_t size)
}
return str;
}
+
+socklen_t sockaddr_len(union sockaddr_any *sa)
+{
+ socklen_t len = 0;
+ switch (sa->sa.sa_family) {
+ case AF_INET:
+ len = sizeof(sa->sin);
+ break;
+ case AF_INET6:
+ len = sizeof(sa->sin6);
+ break;
+ }
+ return len;
+}