ieee80211_ioctl.c (11e9b8bad115cf9799076d3add8824862b038563) ieee80211_ioctl.c (93ec7edca7b468b0a17047e5c6571237b09dcae5)
1/*-
2 * Copyright (c) 2001 Atsushi Onoe
3 * Copyright (c) 2002-2009 Sam Leffler, Errno Consulting
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:

--- 3185 unchanged lines hidden (view full) ---

3194static void
3195ieee80211_ioctl_updatemulti(struct ieee80211com *ic)
3196{
3197 struct ifnet *parent = ic->ic_ifp;
3198 struct ieee80211vap *vap;
3199 void *ioctl;
3200
3201 IEEE80211_LOCK(ic);
1/*-
2 * Copyright (c) 2001 Atsushi Onoe
3 * Copyright (c) 2002-2009 Sam Leffler, Errno Consulting
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:

--- 3185 unchanged lines hidden (view full) ---

3194static void
3195ieee80211_ioctl_updatemulti(struct ieee80211com *ic)
3196{
3197 struct ifnet *parent = ic->ic_ifp;
3198 struct ieee80211vap *vap;
3199 void *ioctl;
3200
3201 IEEE80211_LOCK(ic);
3202 if_purgemaddrs(parent);
3202 if_delallmulti(parent);
3203 ioctl = parent->if_ioctl; /* XXX WAR if_allmulti */
3204 parent->if_ioctl = NULL;
3205 TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) {
3206 struct ifnet *ifp = vap->iv_ifp;
3207 struct ifmultiaddr *ifma;
3208
3203 ioctl = parent->if_ioctl; /* XXX WAR if_allmulti */
3204 parent->if_ioctl = NULL;
3205 TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) {
3206 struct ifnet *ifp = vap->iv_ifp;
3207 struct ifmultiaddr *ifma;
3208
3209 TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link)
3209 TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) {
3210 if (ifma->ifma_addr->sa_family != AF_LINK)
3211 continue;
3210 (void) if_addmulti(parent, ifma->ifma_addr, NULL);
3212 (void) if_addmulti(parent, ifma->ifma_addr, NULL);
3213 }
3211 }
3212 parent->if_ioctl = ioctl;
3213 ieee80211_runtask(ic, &ic->ic_mcast_task);
3214 IEEE80211_UNLOCK(ic);
3215}
3216
3217int
3218ieee80211_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)

--- 122 unchanged lines hidden ---
3214 }
3215 parent->if_ioctl = ioctl;
3216 ieee80211_runtask(ic, &ic->ic_mcast_task);
3217 IEEE80211_UNLOCK(ic);
3218}
3219
3220int
3221ieee80211_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)

--- 122 unchanged lines hidden ---