aboutsummaryrefslogtreecommitdiffstats
path: root/pingu_iface.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 /pingu_iface.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 'pingu_iface.c')
-rw-r--r--pingu_iface.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/pingu_iface.c b/pingu_iface.c
index d2d0ac9..6905844 100644
--- a/pingu_iface.c
+++ b/pingu_iface.c
@@ -40,8 +40,8 @@ int pingu_iface_bind_socket(struct pingu_iface *iface, int log_error)
int r;
if (iface->name[0] == '\0')
return 0;
- r = setsockopt(iface->fd, SOL_SOCKET, SO_BINDTODEVICE, iface->name,
- strlen(iface->name));
+ r = bind(iface->fd, &iface->primary_addr.sa,
+ sockaddr_len(&iface->primary_addr));
if (r < 0 && log_error)
log_perror(iface->name);
iface->has_binding = (r == 0);