Operator/Cast precedence wrong: casting mac[0] to (bool) first - giving "1" for "any mac address that does not start with 00:" - and only then bit-anding with "1" - thus always returning "true". Which, in turn, leads to "reject all incoming packets with 'bad source address'".
OpenVPN bug #216. Signed-off-by: Gert Doering <g...@greenie.muc.de> --- src/openvpn/mroute.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/src/openvpn/mroute.c b/src/openvpn/mroute.c index aecb702..850e336 100644 --- a/src/openvpn/mroute.c +++ b/src/openvpn/mroute.c @@ -52,7 +52,7 @@ mroute_addr_init (struct mroute_addr *addr) static inline bool is_mac_mcast_addr (const uint8_t *mac) { - return (bool) mac[0] & 1; + return (bool) (mac[0] & 1); } static inline bool -- 1.7.8.6