diff options
author | glebius <glebius@FreeBSD.org> | 2013-02-11 10:58:22 +0000 |
---|---|---|
committer | glebius <glebius@FreeBSD.org> | 2013-02-11 10:58:22 +0000 |
commit | a47c0295c5e9d047b28372a33fcabe99a178107f (patch) | |
tree | a4b3a19176d84f646cb98e85f72832bbb0fa72ae /sys/net/if_var.h | |
parent | c990c7deec1df4c9024ad3f642005c53e9d7f9c9 (diff) | |
download | FreeBSD-src-a47c0295c5e9d047b28372a33fcabe99a178107f.zip FreeBSD-src-a47c0295c5e9d047b28372a33fcabe99a178107f.tar.gz |
Resolve source address selection in presense of CARP. Add a couple
of helper functions:
- carp_master() - boolean function which is true if an address
is in the MASTER state.
- ifa_preferred() - boolean function that compares two addresses,
and is aware of CARP.
Utilize ifa_preferred() in ifa_ifwithnet().
The previous version of patch also changed source address selection
logic in jails using carp_master(), but we failed to negotiate this part
with Bjoern. May be we will approach this problem again later.
Reported & tested by: Anton Yuzhaninov <citrin citrin.ru>
Sponsored by: Nginx, Inc
Diffstat (limited to 'sys/net/if_var.h')
-rw-r--r-- | sys/net/if_var.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/net/if_var.h b/sys/net/if_var.h index 7fcbd38..6ccf364 100644 --- a/sys/net/if_var.h +++ b/sys/net/if_var.h @@ -939,8 +939,8 @@ struct ifaddr *ifa_ifwithdstaddr(struct sockaddr *); struct ifaddr *ifa_ifwithnet(struct sockaddr *, int); struct ifaddr *ifa_ifwithroute(int, struct sockaddr *, struct sockaddr *); struct ifaddr *ifa_ifwithroute_fib(int, struct sockaddr *, struct sockaddr *, u_int); - struct ifaddr *ifaof_ifpforaddr(struct sockaddr *, struct ifnet *); +int ifa_preferred(struct ifaddr *, struct ifaddr *); int if_simloop(struct ifnet *ifp, struct mbuf *m, int af, int hlen); |