MCPcopy Create free account
hub / github.com/F-Stack/f-stack / lagg_setmulti

Function lagg_setmulti

freebsd/net/if_lagg.c:1883–1916  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1881#endif
1882
1883static int
1884lagg_setmulti(struct lagg_port *lp)
1885{
1886 struct lagg_softc *sc = lp->lp_softc;
1887 struct ifnet *ifp = lp->lp_ifp;
1888 struct ifnet *scifp = sc->sc_ifp;
1889 struct lagg_mc *mc;
1890 struct ifmultiaddr *ifma;
1891 int error;
1892
1893 IF_ADDR_WLOCK(scifp);
1894 CK_STAILQ_FOREACH(ifma, &scifp->if_multiaddrs, ifma_link) {
1895 if (ifma->ifma_addr->sa_family != AF_LINK)
1896 continue;
1897 mc = malloc(sizeof(struct lagg_mc), M_LAGG, M_NOWAIT);
1898 if (mc == NULL) {
1899 IF_ADDR_WUNLOCK(scifp);
1900 return (ENOMEM);
1901 }
1902 bcopy(ifma->ifma_addr, &mc->mc_addr,
1903 ifma->ifma_addr->sa_len);
1904 mc->mc_addr.sdl_index = ifp->if_index;
1905 mc->mc_ifma = NULL;
1906 SLIST_INSERT_HEAD(&lp->lp_mc_head, mc, mc_entries);
1907 }
1908 IF_ADDR_WUNLOCK(scifp);
1909 SLIST_FOREACH (mc, &lp->lp_mc_head, mc_entries) {
1910 error = if_addmulti(ifp,
1911 (struct sockaddr *)&mc->mc_addr, &mc->mc_ifma);
1912 if (error)
1913 return (error);
1914 }
1915 return (0);
1916}
1917
1918static int
1919lagg_clrmulti(struct lagg_port *lp)

Callers 2

lagg_port_createFunction · 0.85
lagg_ioctlFunction · 0.85

Calls 2

mallocFunction · 0.85
if_addmultiFunction · 0.85

Tested by

no test coverage detected