| 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 ? |