Module Name: src Committed By: yamaguchi Date: Fri Apr 16 01:44:35 UTC 2021
Modified Files: src/sys/net: if_pppoe.c Log Message: Sort initialization sequence in pppoe_clone_create() out for refactoring It has no functionality impact To generate a diff of this commit: cvs rdiff -u -r1.165 -r1.166 src/sys/net/if_pppoe.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/net/if_pppoe.c diff -u src/sys/net/if_pppoe.c:1.165 src/sys/net/if_pppoe.c:1.166 --- src/sys/net/if_pppoe.c:1.165 Fri Apr 16 01:32:04 2021 +++ src/sys/net/if_pppoe.c Fri Apr 16 01:44:35 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: if_pppoe.c,v 1.165 2021/04/16 01:32:04 yamaguchi Exp $ */ +/* $NetBSD: if_pppoe.c,v 1.166 2021/04/16 01:44:35 yamaguchi Exp $ */ /* * Copyright (c) 2002, 2008 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_pppoe.c,v 1.165 2021/04/16 01:32:04 yamaguchi Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_pppoe.c,v 1.166 2021/04/16 01:44:35 yamaguchi Exp $"); #ifdef _KERNEL_OPT #include "pppoe.h" @@ -339,34 +339,43 @@ static int pppoe_clone_create(struct if_clone *ifc, int unit) { struct pppoe_softc *sc; + struct ifnet *ifp; int rv; sc = kmem_zalloc(sizeof(*sc), KM_SLEEP); + ifp = &sc->sc_sppp.pp_if; rw_init(&sc->sc_lock); pppoe_softc_genid(&sc->sc_id); + /* changed to real address later */ + memcpy(&sc->sc_dest, etherbroadcastaddr, sizeof(sc->sc_dest)); - if_initname(&sc->sc_sppp.pp_if, "pppoe", unit); - sc->sc_sppp.pp_if.if_softc = sc; - sc->sc_sppp.pp_if.if_mtu = PPPOE_MAXMTU; - sc->sc_sppp.pp_if.if_flags = IFF_SIMPLEX|IFF_POINTOPOINT|IFF_MULTICAST; + if_initname(ifp, "pppoe", unit); + ifp->if_softc = sc; + ifp->if_mtu = PPPOE_MAXMTU; + ifp->if_flags = IFF_SIMPLEX|IFF_POINTOPOINT|IFF_MULTICAST; +#ifdef PPPOE_MPSAFE + ifp->if_extflags = IFEF_MPSAFE; +#endif + ifp->if_type = IFT_PPP; + ifp->if_hdrlen = sizeof(struct ether_header) + PPPOE_HEADERLEN; + ifp->if_dlt = DLT_PPP_ETHER; + ifp->if_ioctl = pppoe_ioctl; + ifp->if_start = pppoe_start; #ifdef PPPOE_MPSAFE - sc->sc_sppp.pp_if.if_extflags = IFEF_MPSAFE; + ifp->if_transmit = pppoe_transmit; #endif - sc->sc_sppp.pp_if.if_type = IFT_PPP; - sc->sc_sppp.pp_if.if_hdrlen = sizeof(struct ether_header) + PPPOE_HEADERLEN; - sc->sc_sppp.pp_if.if_dlt = DLT_PPP_ETHER; + IFQ_SET_MAXLEN(&ifp->if_snd, IFQ_MAXLEN); + IFQ_SET_READY(&ifp->if_snd); + + sc->sc_sppp.pp_tls = pppoe_tls; + sc->sc_sppp.pp_tlf = pppoe_tlf; sc->sc_sppp.pp_flags |= PP_KEEPALIVE | /* use LCP keepalive */ PP_NOFRAMING; /* no serial encapsulation */ - sc->sc_sppp.pp_if.if_ioctl = pppoe_ioctl; - IFQ_SET_MAXLEN(&sc->sc_sppp.pp_if.if_snd, IFQ_MAXLEN); - IFQ_SET_READY(&sc->sc_sppp.pp_if.if_snd); - - /* changed to real address later */ - memcpy(&sc->sc_dest, etherbroadcastaddr, sizeof(sc->sc_dest)); + sc->sc_sppp.pp_framebytes = PPPOE_HEADERLEN; /* framing added to ppp packets */ rv = workqueue_create(&sc->sc_timeout_wq, - sc->sc_sppp.pp_if.if_xname, pppoe_timeout_wk, sc, + ifp->if_xname, pppoe_timeout_wk, sc, PRI_SOFTNET, IPL_SOFTNET, 0); if (rv != 0) goto destroy_sclock; @@ -374,33 +383,23 @@ pppoe_clone_create(struct if_clone *ifc, callout_init(&sc->sc_timeout, CALLOUT_MPSAFE); callout_setfunc(&sc->sc_timeout, pppoe_timeout_co, sc); - sc->sc_sppp.pp_if.if_start = pppoe_start; -#ifdef PPPOE_MPSAFE - sc->sc_sppp.pp_if.if_transmit = pppoe_transmit; -#endif - sc->sc_sppp.pp_tls = pppoe_tls; - sc->sc_sppp.pp_tlf = pppoe_tlf; - sc->sc_sppp.pp_framebytes = PPPOE_HEADERLEN; /* framing added to ppp packets */ - - rv = if_initialize(&sc->sc_sppp.pp_if); + rv = if_initialize(ifp); if (rv != 0) goto destroy_timeout; - sc->sc_sppp.pp_if.if_percpuq = if_percpuq_create(&sc->sc_sppp.pp_if); - sppp_attach(&sc->sc_sppp.pp_if); + ifp->if_percpuq = if_percpuq_create(ifp); - bpf_attach(&sc->sc_sppp.pp_if, DLT_PPP_ETHER, 0); rw_enter(&pppoe_softc_list_lock, RW_READER); if (LIST_EMPTY(&pppoe_softc_list)) { pfil_add_ihook(pppoe_ifattach_hook, NULL, PFIL_IFNET, if_pfil); } + LIST_INSERT_HEAD(&pppoe_softc_list, sc, sc_list); rw_exit(&pppoe_softc_list_lock); - if_register(&sc->sc_sppp.pp_if); + sppp_attach(ifp); + bpf_attach(ifp, DLT_PPP_ETHER, 0); + if_register(ifp); - rw_enter(&pppoe_softc_list_lock, RW_WRITER); - LIST_INSERT_HEAD(&pppoe_softc_list, sc, sc_list); - rw_exit(&pppoe_softc_list_lock); return 0; destroy_timeout: