Module Name: src Committed By: roy Date: Thu Oct 15 02:54:10 UTC 2020
Modified Files: src/sys/net: if_l2tp.c Log Message: l2tp: Set the link state UP if we have a tunnel, otherwise DOWN. To generate a diff of this commit: cvs rdiff -u -r1.43 -r1.44 src/sys/net/if_l2tp.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_l2tp.c diff -u src/sys/net/if_l2tp.c:1.43 src/sys/net/if_l2tp.c:1.44 --- src/sys/net/if_l2tp.c:1.43 Sat Feb 1 12:54:50 2020 +++ src/sys/net/if_l2tp.c Thu Oct 15 02:54:10 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: if_l2tp.c,v 1.43 2020/02/01 12:54:50 riastradh Exp $ */ +/* $NetBSD: if_l2tp.c,v 1.44 2020/10/15 02:54:10 roy Exp $ */ /* * Copyright (c) 2017 Internet Initiative Japan Inc. @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_l2tp.c,v 1.43 2020/02/01 12:54:50 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_l2tp.c,v 1.44 2020/10/15 02:54:10 roy Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -286,9 +286,8 @@ l2tpattach0(struct l2tp_softc *sc) sc->l2tp_ec.ec_if.if_addrlen = 0; sc->l2tp_ec.ec_if.if_mtu = L2TP_MTU; sc->l2tp_ec.ec_if.if_flags = IFF_POINTOPOINT|IFF_MULTICAST|IFF_SIMPLEX; - sc->l2tp_ec.ec_if.if_extflags = IFEF_NO_LINK_STATE_CHANGE; #ifdef NET_MPSAFE - sc->l2tp_ec.ec_if.if_extflags |= IFEF_MPSAFE; + sc->l2tp_ec.ec_if.if_extflags = IFEF_MPSAFE; #endif sc->l2tp_ec.ec_if.if_ioctl = l2tp_ioctl; sc->l2tp_ec.ec_if.if_output = l2tp_output; @@ -322,11 +321,13 @@ l2tpattach0(struct l2tp_softc *sc) * if_percpuq_enqueue(). However, that causes recursive softnet_lock * when NET_MPSAFE is not set. */ - rv = if_attach(&sc->l2tp_ec.ec_if); + rv = if_initialize(&sc->l2tp_ec.ec_if); if (rv != 0) return rv; + sc->l2tp_ec.ec_if.if_link_state = LINK_STATE_DOWN; if_alloc_sadl(&sc->l2tp_ec.ec_if); bpf_attach(&sc->l2tp_ec.ec_if, DLT_EN10MB, sizeof(struct ether_header)); + if_register(&sc->l2tp_ec.ec_if); return 0; } @@ -810,6 +811,7 @@ l2tp_ioctl(struct ifnet *ifp, u_long cmd case SIOCDIFPHYADDR: l2tp_delete_tunnel(&sc->l2tp_ec.ec_if); + if_link_state_change(&sc->l2tp_ec.ec_if, LINK_STATE_DOWN); break; case SIOCGIFPSRCADDR: @@ -1073,6 +1075,7 @@ l2tp_set_tunnel(struct ifnet *ifp, struc sockaddr_free(odst); kmem_free(ovar, sizeof(*ovar)); + if_link_state_change(ifp, LINK_STATE_UP); return 0; error: