Summary: | vtnet drivers didn't support being use for multicast routing (MRT_ADD_VIF) | ||
---|---|---|---|
Product: | Base System | Reporter: | olivier |
Component: | kern | Assignee: | freebsd-net (Nobody) <net> |
Status: | New --- | ||
Severity: | Affects Some People | CC: | ae |
Priority: | --- | ||
Version: | 10.2-STABLE | ||
Hardware: | Any | ||
OS: | Any |
Description
olivier
2015-08-19 14:58:25 UTC
errno(2) translate error number 45 by a EOPNOTSUPP. And code in netinet/ip_mroute.c can return EOPNOTSUPP in 2 cases: if ((vifcp->vifc_flags & VIFF_TUNNEL) != 0) { CTR1(KTR_IPMF, "%s: tunnels are no longer supported", __func__); VIF_UNLOCK(); return EOPNOTSUPP; or } else { /* Make sure the interface supports multicast */ if ((ifp->if_flags & IFF_MULTICAST) == 0) { VIF_UNLOCK(); return EOPNOTSUPP; But a vtnet interface seems to correctly set IFF_MULTICAST because dev/virtio/network/if_vtnet.c includes: vtnet_setup_interface(struct vtnet_softc *sc) { ... ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; ... } Then how to troubleshoot deeper this problem ? (In reply to olivier from comment #1) > errno(2) translate error number 45 by a EOPNOTSUPP. > > And code in netinet/ip_mroute.c can return EOPNOTSUPP in 2 cases: You forgot about "return (error)" and "return (some_func())" :) I guess you receive this error from if_allmulti()->vtnet_ioctl(). I beleive I've found the source of the problem in this message: https://lists.freebsd.org/pipermail/svn-src-head/2014-January/055007.html "It also does not handle multicast filter configuration when VTNET_FLAG_CTRL_RX flag is not set. If vtnet(4) does not support multicast filter, it shouldn't announce IFF_MULTICAST. I wonder how vtnet(4) can work with carp(4) given that its multicast handling is ignored." If I understand correctly: Multicast support is totaly missing on the vtnet drivers ? |