Add a new macro IF_LLSOCKADDR which maps a ifnet pointer to the
authorJoerg Sonnenberger <joerg@dragonflybsd.org>
Fri, 3 Jun 2005 23:23:03 +0000 (23:23 +0000)
committerJoerg Sonnenberger <joerg@dragonflybsd.org>
Fri, 3 Jun 2005 23:23:03 +0000 (23:23 +0000)
associated link layer sockaddr. Use it to implement IF_LLADDR.
Replace most references of ifnet_addrs with one of those macros.

This makes the sometimes explicitly encoded assumption of each
interface having a link-layer address implicit and is the
preparation for removing ifnet_addrs.

16 files changed:
sys/dev/netif/an/if_an.c
sys/dev/netif/owi/if_owi.c
sys/dev/netif/owi/if_wivar.h
sys/dev/netif/wi/if_wi.c
sys/dev/netif/wi/if_wivar.h
sys/net/ef/if_ef.c
sys/net/if.c
sys/net/if_arcsubr.c
sys/net/if_ethersubr.c
sys/net/if_fddisubr.c
sys/net/if_iso88025subr.c
sys/net/if_var.h
sys/net/vlan/if_vlan.c
sys/netgraph/fec/ng_fec.c
sys/netinet/ip_input.c
sys/netproto/atm/atm_if.c

index f330bac..feded51 100644 (file)
@@ -30,7 +30,7 @@
  * THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/an/if_an.c,v 1.2.2.13 2003/02/11 03:32:48 ambrisko Exp $
- * $DragonFly: src/sys/dev/netif/an/if_an.c,v 1.21 2005/05/27 15:36:09 joerg Exp $
+ * $DragonFly: src/sys/dev/netif/an/if_an.c,v 1.22 2005/06/03 23:23:03 joerg Exp $
  */
 
 /*
@@ -1707,8 +1707,6 @@ an_setdef(sc, areq)
        struct an_softc         *sc;
        struct an_req           *areq;
 {
-       struct sockaddr_dl      *sdl;
-       struct ifaddr           *ifa;
        struct ifnet            *ifp;
        struct an_ltv_genconfig *cfg;
        struct an_ltv_ssidlist  *ssid;
@@ -1721,11 +1719,9 @@ an_setdef(sc, areq)
        case AN_RID_GENCONFIG:
                cfg = (struct an_ltv_genconfig *)areq;
 
-               ifa = ifnet_addrs[ifp->if_index - 1];
-               sdl = (struct sockaddr_dl *)ifa->ifa_addr;
                bcopy((char *)&cfg->an_macaddr, (char *)&sc->arpcom.ac_enaddr,
                    ETHER_ADDR_LEN);
-               bcopy((char *)&cfg->an_macaddr, LLADDR(sdl), ETHER_ADDR_LEN);
+               bcopy((char *)&cfg->an_macaddr, IF_LLADDR(ifp), ETHER_ADDR_LEN);
 
                bcopy((char *)cfg, (char *)&sc->an_config,
                        sizeof(struct an_ltv_genconfig));
index 1ca54a7..9d8a4ad 100644 (file)
@@ -30,7 +30,7 @@
  * THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/wi/if_wi.c,v 1.103.2.2 2002/08/02 07:11:34 imp Exp $
- * $DragonFly: src/sys/dev/netif/owi/Attic/if_owi.c,v 1.7 2005/05/27 15:36:09 joerg Exp $
+ * $DragonFly: src/sys/dev/netif/owi/Attic/if_owi.c,v 1.8 2005/06/03 23:23:03 joerg Exp $
  */
 
 /*
@@ -1541,11 +1541,9 @@ wi_setdef(sc, wreq)
 
        switch(wreq->wi_type) {
        case WI_RID_MAC_NODE:
-               ifa = ifaddr_byindex(ifp->if_index);
-               sdl = (struct sockaddr_dl *)ifa->ifa_addr;
                bcopy((char *)&wreq->wi_val, (char *)&sc->arpcom.ac_enaddr,
                   ETHER_ADDR_LEN);
-               bcopy((char *)&wreq->wi_val, LLADDR(sdl), ETHER_ADDR_LEN);
+               bcopy((char *)&wreq->wi_val, IF_LLADDR(ifp), ETHER_ADDR_LEN);
                break;
        case WI_RID_PORTTYPE:
                sc->wi_ptype = le16toh(wreq->wi_val[0]);
index cd3d306..97baff0 100644 (file)
@@ -32,7 +32,7 @@
  * THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/wi/if_wivar.h,v 1.8.2.3 2002/08/02 07:11:34 imp Exp $
- * $DragonFly: src/sys/dev/netif/owi/Attic/if_wivar.h,v 1.2 2004/09/15 00:21:09 joerg Exp $
+ * $DragonFly: src/sys/dev/netif/owi/Attic/if_wivar.h,v 1.3 2005/06/03 23:23:03 joerg Exp $
  */
 
 #define WICACHE                        /* turn on signal strength cache code */  
@@ -174,7 +174,6 @@ struct wi_card_ident {
  */
 #define le16toh(x) (x)
 #define htole16(x) (x)
-#define ifaddr_byindex(idx) ifnet_addrs[(idx) - 1];
 #define        WI_LOCK(_sc, _s)        s = splimp()
 #define        WI_UNLOCK(_sc, _s)      splx(s)
 #else
index 31c472c..7502385 100644 (file)
@@ -32,7 +32,7 @@
  * THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/wi/if_wi.c,v 1.166 2004/04/01 00:38:45 sam Exp $
- * $DragonFly: src/sys/dev/netif/wi/if_wi.c,v 1.22 2005/05/25 01:44:32 dillon Exp $
+ * $DragonFly: src/sys/dev/netif/wi/if_wi.c,v 1.23 2005/06/03 23:23:03 joerg Exp $
  */
 
 /*
@@ -613,8 +613,6 @@ wi_init(void *arg)
        struct wi_joinreq join;
        int i;
        int error = 0, wasenabled;
-       struct ifaddr *ifa;
-       struct sockaddr_dl *sdl;
        WI_LOCK_DECL();
 
        WI_LOCK(sc);
@@ -674,9 +672,7 @@ wi_init(void *arg)
                ieee80211_chan2ieee(ic, ic->ic_ibss_chan));
        wi_write_ssid(sc, WI_RID_OWN_SSID, ic->ic_des_essid, ic->ic_des_esslen);
 
-       ifa = ifaddr_byindex(ifp->if_index);
-       sdl = (struct sockaddr_dl *) ifa->ifa_addr;
-       IEEE80211_ADDR_COPY(ic->ic_myaddr, LLADDR(sdl));
+       IEEE80211_ADDR_COPY(ic->ic_myaddr, IF_LLADDR(ifp));
        wi_write_rid(sc, WI_RID_MAC_NODE, ic->ic_myaddr, IEEE80211_ADDR_LEN);
 
        wi_write_val(sc, WI_RID_PM_ENABLED,
index 656acc4..e353e07 100644 (file)
@@ -32,7 +32,7 @@
  * THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/wi/if_wivar.h,v 1.22 2004/04/01 00:38:45 sam Exp $
- * $DragonFly: src/sys/dev/netif/wi/if_wivar.h,v 1.5 2004/09/06 13:52:24 joerg Exp $
+ * $DragonFly: src/sys/dev/netif/wi/if_wivar.h,v 1.6 2005/06/03 23:23:03 joerg Exp $
  */
 
 #if 0
@@ -214,7 +214,6 @@ struct wi_card_ident {
 /*
  * Various compat hacks/kludges
  */
-#define ifaddr_byindex(idx) ifnet_addrs[(idx) - 1];
 #define        WI_LOCK_DECL()          int s
 #define        WI_LOCK(_sc)            s = splimp()
 #define        WI_UNLOCK(_sc)          splx(s)
index c5f7d60..cf91ea8 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/net/if_ef.c,v 1.2.2.4 2001/02/22 09:27:04 bp Exp $
- * $DragonFly: src/sys/net/ef/if_ef.c,v 1.16 2005/06/03 18:20:36 swildner Exp $
+ * $DragonFly: src/sys/net/ef/if_ef.c,v 1.17 2005/06/03 23:23:03 joerg Exp $
  */
 
 #include "opt_inet.h"
@@ -119,8 +119,6 @@ static int
 ef_attach(struct efnet *sc)
 {
        struct ifnet *ifp = (struct ifnet*)&sc->ef_ac.ac_if;
-       struct ifaddr *ifa;
-       struct sockaddr_dl *sdl;
 
        ifp->if_start = ef_start;
        ifp->if_watchdog = NULL;
@@ -130,9 +128,7 @@ ef_attach(struct efnet *sc)
        /*
         * Attach the interface
         */
-       ifa = ifnet_addrs[sc->ef_ifp->if_index];
-       sdl = (struct sockaddr_dl *)ifa->ifa_addr;
-       ether_ifattach(ifp, LLADDR(sdl));
+       ether_ifattach(ifp, IF_LLADDR(sc->ef_ifp));
 
        ifp->if_resolvemulti = 0;
        ifp->if_type = IFT_XETHER;
index 7e280bf..741eab3 100644 (file)
@@ -32,7 +32,7 @@
  *
  *     @(#)if.c        8.3 (Berkeley) 1/4/94
  * $FreeBSD: src/sys/net/if.c,v 1.185 2004/03/13 02:35:03 brooks Exp $
- * $DragonFly: src/sys/net/if.c,v 1.36 2005/05/25 21:26:52 dillon Exp $
+ * $DragonFly: src/sys/net/if.c,v 1.37 2005/06/03 23:23:03 joerg Exp $
  */
 
 #include "opt_compat.h"
@@ -1719,10 +1719,7 @@ if_setlladdr(struct ifnet *ifp, const u_char *lladdr, int len)
        struct ifaddr *ifa;
        struct ifreq ifr;
 
-       ifa = ifnet_addrs[ifp->if_index - 1];
-       if (ifa == NULL)
-               return (EINVAL);
-       sdl = (struct sockaddr_dl *)ifa->ifa_addr;
+       sdl = IF_LLSOCKADDR(ifp);
        if (sdl == NULL)
                return (EINVAL);
        if (len != sdl->sdl_alen)       /* don't allow length to change */
index 2698df7..9a70873 100644 (file)
@@ -1,6 +1,6 @@
 /*     $NetBSD: if_arcsubr.c,v 1.36 2001/06/14 05:44:23 itojun Exp $   */
 /*     $FreeBSD: src/sys/net/if_arcsubr.c,v 1.1.2.5 2003/02/05 18:42:15 fjoe Exp $ */
-/*     $DragonFly: src/sys/net/Attic/if_arcsubr.c,v 1.15 2005/02/17 13:59:36 joerg Exp $ */
+/*     $DragonFly: src/sys/net/Attic/if_arcsubr.c,v 1.16 2005/06/03 23:23:03 joerg Exp $ */
 
 /*
  * Copyright (c) 1994, 1995 Ignatios Souvatzis
@@ -611,7 +611,6 @@ arc_ifattach(ifp, lla)
        struct ifnet *ifp;
        u_int8_t lla;
 {
-       struct ifaddr *ifa;
        struct sockaddr_dl *sdl;
        struct arccom *ac;
 
@@ -626,13 +625,7 @@ arc_ifattach(ifp, lla)
        ifp->if_resolvemulti = arc_resolvemulti;
        if (ifp->if_baudrate == 0)
                ifp->if_baudrate = 2500000;
-#if defined(__DragonFly__) || __FreeBSD_version < 500000
-       ifa = ifnet_addrs[ifp->if_index - 1];
-#else
-       ifa = ifaddr_byindex(ifp->if_index);
-#endif
-       KASSERT(ifa != NULL, ("%s: no lladdr!\n", __func__));
-       sdl = (struct sockaddr_dl *)ifa->ifa_addr;
+       sdl = IF_LLSOCKADDR(ifp);
        sdl->sdl_type = IFT_ARCNET;
        sdl->sdl_alen = ifp->if_addrlen;
 
index f7f7a84..1aade03 100644 (file)
@@ -32,7 +32,7 @@
  *
  *     @(#)if_ethersubr.c      8.1 (Berkeley) 6/10/93
  * $FreeBSD: src/sys/net/if_ethersubr.c,v 1.70.2.33 2003/04/28 15:45:53 archie Exp $
- * $DragonFly: src/sys/net/if_ethersubr.c,v 1.30 2005/04/18 14:26:57 joerg Exp $
+ * $DragonFly: src/sys/net/if_ethersubr.c,v 1.31 2005/06/03 23:23:03 joerg Exp $
  */
 
 #include "opt_atalk.h"
@@ -804,7 +804,6 @@ ether_ifattach(struct ifnet *ifp, uint8_t *lla)
 void
 ether_ifattach_bpf(struct ifnet *ifp, uint8_t *lla, u_int dlt, u_int hdrlen)
 {
-       struct ifaddr *ifa;
        struct sockaddr_dl *sdl;
 
        ifp->if_type = IFT_ETHER;
@@ -818,9 +817,7 @@ ether_ifattach_bpf(struct ifnet *ifp, uint8_t *lla, u_int dlt, u_int hdrlen)
        ifp->if_input = ether_input_internal;
        ifp->if_resolvemulti = ether_resolvemulti;
        ifp->if_broadcastaddr = etherbroadcastaddr;
-       ifa = ifnet_addrs[ifp->if_index - 1];
-       KASSERT(ifa != NULL, ("%s: no lladdr!\n", __func__));
-       sdl = (struct sockaddr_dl *)ifa->ifa_addr;
+       sdl = IF_LLSOCKADDR(ifp);
        sdl->sdl_type = IFT_ETHER;
        sdl->sdl_alen = ifp->if_addrlen;
        bcopy(lla, LLADDR(sdl), ifp->if_addrlen);
index e44dc63..178e725 100644 (file)
@@ -34,7 +34,7 @@
  *
  *     from: if_ethersubr.c,v 1.5 1994/12/13 22:31:45 wollman Exp
  * $FreeBSD: src/sys/net/if_fddisubr.c,v 1.41.2.8 2002/02/20 23:34:09 fjoe Exp $
- * $DragonFly: src/sys/net/Attic/if_fddisubr.c,v 1.17 2005/05/08 18:11:02 joerg Exp $
+ * $DragonFly: src/sys/net/Attic/if_fddisubr.c,v 1.18 2005/06/03 23:23:03 joerg Exp $
  */
 
 #include "opt_atalk.h"
@@ -504,7 +504,6 @@ void
 fddi_ifattach(ifp)
        struct ifnet *ifp;
 {
-       struct ifaddr *ifa;
        struct sockaddr_dl *sdl;
 
        ifp->if_input = fddi_input;
@@ -521,8 +520,7 @@ fddi_ifattach(ifp)
 #endif
        if_attach(ifp);
 #if defined(__DragonFly__) || defined(__FreeBSD__)
-       ifa = ifnet_addrs[ifp->if_index - 1];
-       sdl = (struct sockaddr_dl *)ifa->ifa_addr;
+       sdl = IF_LLSOCKADDR(ifp);
        sdl->sdl_type = IFT_FDDI;
        sdl->sdl_alen = ifp->if_addrlen;
        bcopy(((struct arpcom *)ifp)->ac_enaddr, LLADDR(sdl), ifp->if_addrlen);
index 002f75a..038b593 100644 (file)
@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/net/if_iso88025subr.c,v 1.7.2.7 2002/06/18 00:15:31 kbyanc Exp $
- * $DragonFly: src/sys/net/Attic/if_iso88025subr.c,v 1.11 2005/01/06 09:14:13 hsu Exp $
+ * $DragonFly: src/sys/net/Attic/if_iso88025subr.c,v 1.12 2005/06/03 23:23:03 joerg Exp $
  *
  */
 
@@ -90,7 +90,6 @@ static void   iso88025_input(struct ifnet *, struct mbuf *);
 void
 iso88025_ifattach(struct ifnet *ifp)
 {
-       struct ifaddr *ifa = NULL;
        struct sockaddr_dl *sdl;
 
        ifp->if_input = iso88025_input;
@@ -104,12 +103,7 @@ iso88025_ifattach(struct ifnet *ifp)
        if (ifp->if_mtu == 0)
                ifp->if_mtu = ISO88025_DEFAULT_MTU;
 
-       ifa = ifnet_addrs[ifp->if_index - 1];
-       if (ifa == NULL) {
-               printf("iso88025_ifattach: no lladdr!\n");
-               return;
-       }
-       sdl = (struct sockaddr_dl *)ifa->ifa_addr;
+       sdl = IF_LLSOCKADDR(ifp);
        sdl->sdl_type = IFT_ISO88025;
        sdl->sdl_alen = ifp->if_addrlen;
        bcopy(((struct arpcom *)ifp)->ac_enaddr, LLADDR(sdl), ifp->if_addrlen);
index 0cc9a18..960f0a6 100644 (file)
@@ -32,7 +32,7 @@
  *
  *     From: @(#)if.h  8.1 (Berkeley) 6/10/93
  * $FreeBSD: src/sys/net/if_var.h,v 1.18.2.16 2003/04/15 18:11:19 fjoe Exp $
- * $DragonFly: src/sys/net/if_var.h,v 1.27 2005/06/03 21:19:09 joerg Exp $
+ * $DragonFly: src/sys/net/if_var.h,v 1.28 2005/06/03 23:23:03 joerg Exp $
  */
 
 #ifndef        _NET_IF_VAR_H_
@@ -449,8 +449,9 @@ void        if_clone_detach(struct if_clone *);
 int    if_clone_create(char *, int);
 int    if_clone_destroy(const char *);
 
-#define IF_LLADDR(ifp)                                                 \
-    LLADDR((struct sockaddr_dl *) ifnet_addrs[ifp->if_index - 1]->ifa_addr)
+#define IF_LLSOCKADDR(ifp)                                             \
+    ((struct sockaddr_dl *) ifnet_addrs[(ifp)->if_index - 1]->ifa_addr)
+#define IF_LLADDR(ifp) LLADDR(IF_LLSOCKADDR(ifp))
 
 #ifdef DEVICE_POLLING
 typedef        void poll_handler_t (struct ifnet *ifp, enum poll_cmd cmd, int count);
index 1197e1f..3a3474e 100644 (file)
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/net/if_vlan.c,v 1.15.2.13 2003/02/14 22:25:58 fenner Exp $
- * $DragonFly: src/sys/net/vlan/if_vlan.c,v 1.14 2005/05/08 17:42:35 joerg Exp $
+ * $DragonFly: src/sys/net/vlan/if_vlan.c,v 1.15 2005/06/03 23:23:03 joerg Exp $
  */
 
 /*
@@ -458,7 +458,6 @@ vlan_input(struct ether_header *eh, struct mbuf *m)
 static int
 vlan_config(struct ifvlan *ifv, struct ifnet *p)
 {
-       struct ifaddr *ifa1, *ifa2;
        struct sockaddr_dl *sdl1, *sdl2;
 
        if (p->if_data.ifi_type != IFT_ETHER)
@@ -482,10 +481,8 @@ vlan_config(struct ifvlan *ifv, struct ifnet *p)
         * Set up our ``Ethernet address'' to reflect the underlying
         * physical interface's.
         */
-       ifa1 = ifnet_addrs[ifv->ifv_if.if_index - 1];
-       ifa2 = ifnet_addrs[p->if_index - 1];
-       sdl1 = (struct sockaddr_dl *)ifa1->ifa_addr;
-       sdl2 = (struct sockaddr_dl *)ifa2->ifa_addr;
+       sdl1 = IF_LLSOCKADDR(&ifv->ifv_if);
+       sdl2 = IF_LLSOCKADDR(p);
        sdl1->sdl_type = IFT_ETHER;
        sdl1->sdl_alen = ETHER_ADDR_LEN;
        bcopy(LLADDR(sdl2), LLADDR(sdl1), ETHER_ADDR_LEN);
@@ -503,7 +500,6 @@ vlan_config(struct ifvlan *ifv, struct ifnet *p)
 static int
 vlan_unconfig(struct ifnet *ifp)
 {
-       struct ifaddr *ifa;
        struct sockaddr_dl *sdl;
        struct vlan_mc_entry *mc;
        struct ifvlan *ifv;
@@ -544,8 +540,7 @@ vlan_unconfig(struct ifnet *ifp)
        ifv->ifv_if.if_mtu = ETHERMTU;
 
        /* Clear our MAC address. */
-       ifa = ifnet_addrs[ifv->ifv_if.if_index - 1];
-       sdl = (struct sockaddr_dl *)ifa->ifa_addr;
+       sdl = IF_LLSOCKADDR(&ifv->ifv_if);
        sdl->sdl_type = IFT_ETHER;
        sdl->sdl_alen = ETHER_ADDR_LEN;
        bzero(LLADDR(sdl), ETHER_ADDR_LEN);
index ad3f2ec..7de5569 100644 (file)
@@ -33,7 +33,7 @@
  * THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/netgraph/ng_fec.c,v 1.1.2.1 2002/11/01 21:39:31 julian Exp $
- * $DragonFly: src/sys/netgraph/fec/ng_fec.c,v 1.13 2005/06/02 22:11:45 swildner Exp $
+ * $DragonFly: src/sys/netgraph/fec/ng_fec.c,v 1.14 2005/06/03 23:23:03 joerg Exp $
  */
 /*
  * Copyright (c) 1996-1999 Whistle Communications, Inc.
@@ -399,8 +399,7 @@ ng_fec_addport(struct ng_fec_private *priv, char *iface)
            (char *)&new->fec_mac, ETHER_ADDR_LEN);
 
        /* Set up phony MAC address. */
-       ifa = ifnet_addrs[bifp->if_index - 1];
-       sdl = (struct sockaddr_dl *)ifa->ifa_addr;
+       sdl = IF_LLSOCKADDR(bifp);
        bcopy(priv->arpcom.ac_enaddr, ac->ac_enaddr, ETHER_ADDR_LEN);
        bcopy(priv->arpcom.ac_enaddr, LLADDR(sdl), ETHER_ADDR_LEN);
 
@@ -417,7 +416,6 @@ ng_fec_delport(struct ng_fec_private *priv, char *iface)
        struct ng_fec_bundle    *b;
        struct ifnet            *ifp, *bifp;
        struct arpcom           *ac;
-       struct ifaddr           *ifa;
        struct sockaddr_dl      *sdl;
        struct ng_fec_portlist  *p;
 
@@ -452,8 +450,7 @@ ng_fec_delport(struct ng_fec_private *priv, char *iface)
 
        /* Restore MAC address. */
        ac = (struct arpcom *)bifp;
-       ifa = ifnet_addrs[bifp->if_index - 1];
-       sdl = (struct sockaddr_dl *)ifa->ifa_addr;
+       sdl = IF_LLSOCKADDR(bifp);
        bcopy((char *)&p->fec_mac, ac->ac_enaddr, ETHER_ADDR_LEN);
        bcopy((char *)&p->fec_mac, LLADDR(sdl), ETHER_ADDR_LEN);
 
index eff0e41..babda93 100644 (file)
@@ -82,7 +82,7 @@
  *
  *     @(#)ip_input.c  8.2 (Berkeley) 1/4/94
  * $FreeBSD: src/sys/netinet/ip_input.c,v 1.130.2.52 2003/03/07 07:01:28 silby Exp $
- * $DragonFly: src/sys/netinet/ip_input.c,v 1.52 2005/06/02 23:52:42 dillon Exp $
+ * $DragonFly: src/sys/netinet/ip_input.c,v 1.53 2005/06/03 23:23:03 joerg Exp $
  */
 
 #define        _IP_VHL
@@ -2229,8 +2229,7 @@ ip_savecontrol(struct inpcb *inp, struct mbuf **mp, struct ip *ip,
 
                if (((ifp = m->m_pkthdr.rcvif)) &&
                    ((ifp->if_index != 0) && (ifp->if_index <= if_index))) {
-                       sdp = (struct sockaddr_dl *)
-                           ifnet_addrs[ifp->if_index - 1]->ifa_addr;
+                       sdp = IF_LLSOCKADDR(ifp);
                        /*
                         * Change our mind and don't try copy.
                         */
index 9bcae49..2a2776e 100644 (file)
@@ -24,7 +24,7 @@
  * notice must be reproduced on all copies.
  *
  *     @(#) $FreeBSD: src/sys/netatm/atm_if.c,v 1.5 1999/08/28 00:48:35 peter Exp $
- *     @(#) $DragonFly: src/sys/netproto/atm/atm_if.c,v 1.10 2005/06/02 22:37:45 dillon Exp $
+ *     @(#) $DragonFly: src/sys/netproto/atm/atm_if.c,v 1.11 2005/06/03 23:23:03 joerg Exp $
  */
 
 /*
@@ -285,7 +285,6 @@ atm_physif_ioctl(code, data, arg)
        int                     count, len, buf_len = aip->air_buf_len;
        int                     err = 0;
        char                    ifname[2*IFNAMSIZ];
-       struct ifaddr           *ifa;
        struct in_ifaddr        *ia;
        struct sockaddr_dl      *sdl;
 
@@ -523,15 +522,11 @@ atm_physif_ioctl(code, data, arg)
                         * Set macaddr in <Link> address
                         */
                        ifp->if_addrlen = 6;
-                       ifa = ifnet_addrs[ifp->if_index - 1];
-                       if ( ifa ) {
-                               sdl = (struct sockaddr_dl *)
-                                       ifa->ifa_addr;
-                               sdl->sdl_type = IFT_ETHER;
-                               sdl->sdl_alen = ifp->if_addrlen;
-                               bcopy ( (caddr_t)&cup->cu_config.ac_macaddr,
-                                       LLADDR(sdl), ifp->if_addrlen );
-                       }
+                       sdl = IF_LLSOCKADDR(ifp);
+                       sdl->sdl_type = IFT_ETHER;
+                       sdl->sdl_alen = ifp->if_addrlen;
+                       bcopy ( (caddr_t)&cup->cu_config.ac_macaddr,
+                               LLADDR(sdl), ifp->if_addrlen );
                }
                break;