From 1976ef16a8708201289ddbec33fc0efe7ceb061e Mon Sep 17 00:00:00 2001 From: mdodd Date: Wed, 18 Aug 1999 06:12:00 +0000 Subject: SIOCSIFADDR, SIOCGIFADDR, and SIOCSIFMTU are implemented in sys/net/if_ethersubr.c:ether_ioctl(). Drivers need not implement generic behavior. PR: kern/12126 Submitted by: in part by Boris Popov --- sys/dev/ep/if_ep.c | 93 +++-------------------------------------------- sys/dev/ex/if_ex.c | 80 +++-------------------------------------- sys/dev/fe/if_fe.c | 25 +------------ sys/dev/ie/if_ie.c | 100 +++------------------------------------------------ sys/dev/lnc/if_lnc.c | 37 ++++--------------- sys/dev/wl/if_wl.c | 35 ++++-------------- 6 files changed, 27 insertions(+), 343 deletions(-) (limited to 'sys/dev') diff --git a/sys/dev/ep/if_ep.c b/sys/dev/ep/if_ep.c index b952000..6c9e5ec 100644 --- a/sys/dev/ep/if_ep.c +++ b/sys/dev/ep/if_ep.c @@ -38,7 +38,7 @@ */ /* - * $Id: if_ep.c,v 1.80 1999/07/06 19:22:46 des Exp $ + * $Id: if_ep.c,v 1.81 1999/07/25 01:20:36 hosokawa Exp $ * * Promiscuous mode added and interrupt logic slightly changed * to reduce the number of adapter failures. Transceiver select @@ -78,21 +78,6 @@ #include -#ifdef INET -#include -#include -#endif - -#ifdef IPX -#include -#include -#endif - -#ifdef NS -#include -#include -#endif - #if NBPF > 0 #include #endif @@ -1225,7 +1210,6 @@ epioctl(ifp, cmd, data) u_long cmd; caddr_t data; { - register struct ifaddr *ifa = (struct ifaddr *) data; struct ep_softc *sc = ifp->if_softc; struct ifreq *ifr = (struct ifreq *) data; int s, error = 0; @@ -1234,67 +1218,11 @@ epioctl(ifp, cmd, data) switch (cmd) { case SIOCSIFADDR: - ifp->if_flags |= IFF_UP; - - /* netifs are BUSY when UP */ - - switch (ifa->ifa_addr->sa_family) { -#ifdef INET - case AF_INET: - epinit(sc); /* before arpwhohas */ - arp_ifinit((struct arpcom *)ifp, ifa); - break; -#endif -#ifdef IPX - case AF_IPX: - { - register struct ipx_addr *ina = &(IA_SIPX(ifa)->sipx_addr); - - if (ipx_nullhost(*ina)) - ina->x_host = - *(union ipx_host *) (sc->arpcom.ac_enaddr); - else { - ifp->if_flags &= ~IFF_RUNNING; - bcopy((caddr_t) ina->x_host.c_host, - (caddr_t) sc->arpcom.ac_enaddr, - sizeof(sc->arpcom.ac_enaddr)); - } - epinit(sc); - break; - } -#endif -#ifdef NS - case AF_NS: - { - register struct ns_addr *ina = &(IA_SNS(ifa)->sns_addr); - - if (ns_nullhost(*ina)) - ina->x_host = - *(union ns_host *) (sc->arpcom.ac_enaddr); - else { - ifp->if_flags &= ~IFF_RUNNING; - bcopy((caddr_t) ina->x_host.c_host, - (caddr_t) sc->arpcom.ac_enaddr, - sizeof(sc->arpcom.ac_enaddr)); - } - epinit(sc); - break; - } -#endif - default: - epinit(sc); - break; - } - break; case SIOCGIFADDR: - { - struct sockaddr *sa; - - sa = (struct sockaddr *) & ifr->ifr_data; - bcopy((caddr_t) sc->arpcom.ac_enaddr, - (caddr_t) sa->sa_data, ETHER_ADDR_LEN); - } - break; + case SIOCSIFMTU: + error = ether_ioctl(ifp, command, data); + break; + case SIOCSIFFLAGS: if ((ifp->if_flags & IFF_UP) == 0 && ifp->if_flags & IFF_RUNNING) { @@ -1315,17 +1243,6 @@ epioctl(ifp, cmd, data) sizeof(sc->sc_addr)); break; #endif - case SIOCSIFMTU: - - /* - * Set the interface MTU. - */ - if (ifr->ifr_mtu > ETHERMTU) { - error = EINVAL; - } else { - ifp->if_mtu = ifr->ifr_mtu; - } - break; case SIOCADDMULTI: case SIOCDELMULTI: /* diff --git a/sys/dev/ex/if_ex.c b/sys/dev/ex/if_ex.c index 8915af7..c9d0292 100644 --- a/sys/dev/ex/if_ex.c +++ b/sys/dev/ex/if_ex.c @@ -24,7 +24,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: if_ex.c,v 1.15 1999/05/02 22:01:24 peter Exp $ + * $Id: if_ex.c,v 1.16 1999/07/06 19:22:47 des Exp $ */ /* @@ -50,21 +50,6 @@ #include -#ifdef INET -#include -#include -#endif - -#ifdef IPX -#include -#include -#endif - -#ifdef NS -#include -#include -#endif - #if NBPF > 0 #include #endif @@ -766,7 +751,6 @@ void ex_rx_intr(int unit) int ex_ioctl(register struct ifnet *ifp, u_long cmd, caddr_t data) { - register struct ifaddr *ifa = (struct ifaddr *) data; struct ex_softc *sc = &ex_sc[ifp->if_unit]; struct ifreq *ifr = (struct ifreq *) data; int s, error = 0; @@ -777,60 +761,11 @@ int ex_ioctl(register struct ifnet *ifp, u_long cmd, caddr_t data) switch(cmd) { case SIOCSIFADDR: - DODEBUG(Start_End, printf("SIOCSIFADDR");); - ifp->if_flags |= IFF_UP; - - switch(ifa->ifa_addr->sa_family) { -#ifdef INET - case AF_INET: - ex_init(sc); - arp_ifinit((struct arpcom *) ifp, ifa); - break; -#endif -#ifdef IPX_NOTYET - case AF_IPX: - { - register struct ipx_addr *ina = &(IA_SIPX(ifa)->sipx_addr); - - if (ipx_nullhost(*ina)) - ina->x_host = *(union ipx_host *) (sc->arpcom.ac_enaddr); - else { - ifp->if_flags &= ~IFF_RUNNING; - bcopy((caddr_t) ina->x_host.c_host, (caddr_t) sc->arpcom.ac_enaddr, sizeof(sc->arpcom.ac_enaddr)); - } - ex_init(sc); - break; - } -#endif -#ifdef NS - case AF_NS: - { - register struct ns_addr *ina = &(IA_SNS(ifa)->sns_addr); - - if (ns_nullhost(*ina)) - ina->x_host = *(union ns_host *) (sc->arpcom.ac_enaddr); - else { - ifp->if_flags &= ~IFF_RUNNING; - bcopy((caddr_t) ina->x_host.c_host, (caddr_t) sc->arpcom.ac_enaddr, sizeof(sc->arpcom.ac_enaddr)); - } - ex_init(sc); - break; - } -#endif - default: - ex_init(sc); - break; - } - break; case SIOCGIFADDR: - { - struct sockaddr *sa; + case SIOCSIFMTU: + error = ether_ioctl(ifp, command, data); + break; - DODEBUG(Start_End, printf("SIOCGIFADDR");); - sa = (struct sockaddr *) &ifr->ifr_data; - bcopy((caddr_t) sc->arpcom.ac_enaddr, (caddr_t) sa->sa_data, ETHER_ADDR_LEN); - } - break; case SIOCSIFFLAGS: DODEBUG(Start_End, printf("SIOCSIFFLAGS");); if ((ifp->if_flags & IFF_UP) == 0 && ifp->if_flags & IFF_RUNNING) { @@ -846,13 +781,6 @@ int ex_ioctl(register struct ifnet *ifp, u_long cmd, caddr_t data) bcopy((caddr_t) sc->sc_addr, (caddr_t) &ifr->ifr_data, sizeof(sc->sc_addr)); break; #endif - case SIOCSIFMTU: - DODEBUG(Start_End, printf("SIOCSIFMTU");); - if (ifr->ifr_mtu > ETHERMTU) - error = EINVAL; - else - ifp->if_mtu = ifr->ifr_mtu; - break; case SIOCADDMULTI: DODEBUG(Start_End, printf("SIOCADDMULTI");); case SIOCDELMULTI: diff --git a/sys/dev/fe/if_fe.c b/sys/dev/fe/if_fe.c index 21eccc2..fcd6dab 100644 --- a/sys/dev/fe/if_fe.c +++ b/sys/dev/fe/if_fe.c @@ -21,7 +21,7 @@ */ /* - * $Id: if_fe.c,v 1.50 1999/05/04 12:59:59 kato Exp $ + * $Id: if_fe.c,v 1.51 1999/07/06 19:22:48 des Exp $ * * Device driver for Fujitsu MB86960A/MB86965A based Ethernet cards. * To be used with FreeBSD 3.x @@ -87,29 +87,6 @@ #include #include -#ifdef INET -#include -#include -#endif - -/* IPX code is not tested. FIXME. */ -#ifdef IPX -#include -#include -#endif - -/* To be used with IPv6 package of INRIA. */ -#ifdef INET6 -/* IPv6 added by shin 96.2.6 */ -#include -#endif - -/* XNS code is not tested. FIXME. */ -#ifdef NS -#include -#include -#endif - #if NBPF > 0 #include #endif diff --git a/sys/dev/ie/if_ie.c b/sys/dev/ie/if_ie.c index a41b0b0..0cfa9dd 100644 --- a/sys/dev/ie/if_ie.c +++ b/sys/dev/ie/if_ie.c @@ -47,7 +47,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: if_ie.c,v 1.60 1999/05/13 12:21:41 bde Exp $ + * $Id: if_ie.c,v 1.61 1999/07/06 19:22:49 des Exp $ */ /* @@ -127,21 +127,6 @@ iomem and and with 0xffff. #include "bpf.h" -#ifdef INET -#include -#include -#endif - -#ifdef IPX -#include -#include -#endif - -#ifdef NS -#include -#include -#endif - #include #include @@ -2258,80 +2243,16 @@ ie_stop(int unit) static int ieioctl(struct ifnet *ifp, u_long command, caddr_t data) { - struct ifaddr *ifa = (struct ifaddr *) data; -#if defined(IPX) || defined(NS) - struct ie_softc *ie = ifp->if_softc; -#endif struct ifreq *ifr = (struct ifreq *) data; int s, error = 0; s = splimp(); switch (command) { - case SIOCSIFADDR: - ifp->if_flags |= IFF_UP; - - switch (ifa->ifa_addr->sa_family) { -#ifdef INET - case AF_INET: - ieinit(ifp->if_unit); - arp_ifinit((struct arpcom *) ifp, ifa); - break; -#endif /* INET */ - -#ifdef IPX - /* - * This magic copied from if_is.c; I don't use XNS, - * so I have no way of telling if this actually - * works or not. - */ - case AF_IPX: - { - struct ipx_addr *ina = - &(IA_SIPX(ifa)->sipx_addr); - - if (ipx_nullhost(*ina)) { - ina->x_host = *(union ipx_host *) (ie->arpcom.ac_enaddr); - } else { - ifp->if_flags &= ~IFF_RUNNING; - bcopy((caddr_t) ina->x_host.c_host, - (caddr_t) ie->arpcom.ac_enaddr, - sizeof ie->arpcom.ac_enaddr); - } - - ieinit(ifp->if_unit); - } - break; -#endif /* IPX */ - -#ifdef NS - /* - * This magic copied from if_is.c; I don't use XNS, - * so I have no way of telling if this actually - * works or not. - */ - case AF_NS: - { - struct ns_addr *ina = &(IA_SNS(ifa)->sns_addr); - - if (ns_nullhost(*ina)) { - ina->x_host = *(union ns_host *)(ie->arpcom.ac_enaddr); - } else { - ifp->if_flags &= ~IFF_RUNNING; - bcopy((caddr_t) ina->x_host.c_host, - (caddr_t) ie->arpcom.ac_enaddr, - sizeof ie->arpcom.ac_enaddr); - } - - ieinit(ifp->if_unit); - } - break; -#endif /* NS */ - - default: - ieinit(ifp->if_unit); - break; - } + case SIOCSIFADDR: + case SIOCGIFADDR: + case SIOCSIFMTU: + error = ether_ioctl(ifp, command, data); break; case SIOCSIFFLAGS: @@ -2367,17 +2288,6 @@ ieioctl(struct ifnet *ifp, u_long command, caddr_t data) error = 0; break; - case SIOCSIFMTU: - /* - * Set the interface MTU. - */ - if (ifr->ifr_mtu > ETHERMTU) { - error = EINVAL; - } else { - ifp->if_mtu = ifr->ifr_mtu; - } - break; - default: error = EINVAL; } diff --git a/sys/dev/lnc/if_lnc.c b/sys/dev/lnc/if_lnc.c index d035311..2bdfce4 100644 --- a/sys/dev/lnc/if_lnc.c +++ b/sys/dev/lnc/if_lnc.c @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: if_lnc.c,v 1.61 1999/07/06 19:22:50 des Exp $ + * $Id: if_lnc.c,v 1.62 1999/08/10 01:03:49 mdodd Exp $ */ /* @@ -83,10 +83,6 @@ #include #include #include -#ifdef INET -#include -#include -#endif #if NBPF > 0 #include @@ -1845,28 +1841,17 @@ lnc_ioctl(struct ifnet * ifp, u_long command, caddr_t data) { struct lnc_softc *sc = ifp->if_softc; - struct ifaddr *ifa = (struct ifaddr *) data; struct ifreq *ifr = (struct ifreq *) data; int s, error = 0; s = splimp(); switch (command) { - case SIOCSIFADDR: - ifp->if_flags |= IFF_UP; - - switch (ifa->ifa_addr->sa_family) { -#ifdef INET - case AF_INET: - lnc_init(sc); - arp_ifinit((struct arpcom *)ifp, ifa); - break; -#endif - default: - lnc_init(sc); - break; - } - break; + case SIOCSIFADDR: + case SIOCGIFADDR: + case SIOCSIFMTU: + error = ether_ioctl(ifp, command, data); + break; case SIOCSIFFLAGS: #ifdef DEBUG @@ -1917,16 +1902,6 @@ lnc_ioctl(struct ifnet * ifp, u_long command, caddr_t data) lnc_init(sc); error = 0; break; - case SIOCSIFMTU: - /* - * Set the interface MTU. - */ - - if (ifr->ifr_mtu > ETHERMTU) { - error = EINVAL; - } else - ifp->if_mtu = ifr->ifr_mtu; - break; default: error = EINVAL; } diff --git a/sys/dev/wl/if_wl.c b/sys/dev/wl/if_wl.c index 9a4fbd7..93d4bd5 100644 --- a/sys/dev/wl/if_wl.c +++ b/sys/dev/wl/if_wl.c @@ -1,4 +1,4 @@ -/* $Id: if_wl.c,v 1.21 1999/04/27 11:15:02 phk Exp $ */ +/* $Id: if_wl.c,v 1.22 1999/07/06 19:22:54 des Exp $ */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -1160,7 +1160,6 @@ wlread(int unit, u_short fd_p) static int wlioctl(struct ifnet *ifp, u_long cmd, caddr_t data) { - register struct ifaddr *ifa = (struct ifaddr *)data; register struct ifreq *ifr = (struct ifreq *)data; int unit = ifp->if_unit; register struct wl_softc *sc = WLSOFTC(unit); @@ -1180,33 +1179,11 @@ wlioctl(struct ifnet *ifp, u_long cmd, caddr_t data) opri = splimp(); switch (cmd) { case SIOCSIFADDR: - /* Set own IP address and enable interface */ - ifp->if_flags |= IFF_UP; - switch (ifa->ifa_addr->sa_family) { -#ifdef INET - case AF_INET: - wlinit(sc); - arp_ifinit((struct arpcom *)ifp, ifa); - break; -#endif -#ifdef NS - case AF_NS: - { - register struct ns_addr *ina = - &(IA_SNS(ifa)->sns_addr); - if (ns_nullhost(*ina)) - ina->x_host = *(union ns_host *)(ds->wl_addr); - else - wlsetaddr(ina->x_host.c_host, unit); - wlinit(sc); - break; - } -#endif - default: - wlinit(sc); - break; - } - break; + case SIOCGIFADDR: + case SIOCSIFMTU: + error = ether_ioctl(ifp, command, data); + break; + case SIOCSIFFLAGS: if (ifp->if_flags & IFF_ALLMULTI) { mode |= MOD_ENAL; -- cgit v1.1