diff options
author | 2009-05-31 20:22:18 +0000 | |
---|---|---|
committer | 2009-05-31 20:22:18 +0000 | |
commit | a4b04b67393bca818fde6e24cf1c70f63bb78ba9 (patch) | |
tree | 3e3d58b2fd3ed06f4478fd27a81087eaf47444aa | |
parent | Make iomem_ex cover the complete (48-bit) physical address space. Makes (diff) | |
download | wireguard-openbsd-a4b04b67393bca818fde6e24cf1c70f63bb78ba9.tar.xz wireguard-openbsd-a4b04b67393bca818fde6e24cf1c70f63bb78ba9.zip |
Consolidate common code for interface attachment into single function
to save some space in the kernel. Although there are deeper issues with
interface attachment, this diff was not meant to address those, just to
shave some space ;)
ok henning@, claudio@
-rw-r--r-- | sys/net/if.c | 71 |
1 files changed, 30 insertions, 41 deletions
diff --git a/sys/net/if.c b/sys/net/if.c index 484fbb715a2..30e7305e745 100644 --- a/sys/net/if.c +++ b/sys/net/if.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if.c,v 1.190 2009/05/31 04:07:03 claudio Exp $ */ +/* $OpenBSD: if.c,v 1.191 2009/05/31 20:22:18 blambert Exp $ */ /* $NetBSD: if.c,v 1.35 1996/05/07 05:26:04 thorpej Exp $ */ /* @@ -127,6 +127,7 @@ void if_attachsetup(struct ifnet *); void if_attachdomain1(struct ifnet *); +void if_attach_common(struct ifnet *); int ifqmaxlen = IFQ_MAXLEN; @@ -410,26 +411,7 @@ if_attachdomain1(struct ifnet *ifp) void if_attachhead(struct ifnet *ifp) { - if (if_index == 0) { - TAILQ_INIT(&ifnet); - TAILQ_INIT(&ifg_head); - } - TAILQ_INIT(&ifp->if_addrlist); - ifp->if_addrhooks = malloc(sizeof(*ifp->if_addrhooks), - M_TEMP, M_NOWAIT); - if (ifp->if_addrhooks == NULL) - panic("if_attachhead: malloc"); - TAILQ_INIT(ifp->if_addrhooks); - ifp->if_linkstatehooks = malloc(sizeof(*ifp->if_linkstatehooks), - M_TEMP, M_NOWAIT); - if (ifp->if_linkstatehooks == NULL) - panic("if_attachhead: malloc"); - TAILQ_INIT(ifp->if_linkstatehooks); - ifp->if_detachhooks = malloc(sizeof(*ifp->if_detachhooks), - M_TEMP, M_NOWAIT); - if (ifp->if_detachhooks == NULL) - panic("if_attachhead: malloc"); - TAILQ_INIT(ifp->if_detachhooks); + if_attach_common(ifp); TAILQ_INSERT_HEAD(&ifnet, ifp, if_list); if_attachsetup(ifp); } @@ -441,26 +423,7 @@ if_attach(struct ifnet *ifp) struct ifnet *before = NULL; #endif - if (if_index == 0) { - TAILQ_INIT(&ifnet); - TAILQ_INIT(&ifg_head); - } - TAILQ_INIT(&ifp->if_addrlist); - ifp->if_addrhooks = malloc(sizeof(*ifp->if_addrhooks), - M_TEMP, M_NOWAIT); - if (ifp->if_addrhooks == NULL) - panic("if_attach: malloc"); - TAILQ_INIT(ifp->if_addrhooks); - ifp->if_linkstatehooks = malloc(sizeof(*ifp->if_linkstatehooks), - M_TEMP, M_NOWAIT); - if (ifp->if_linkstatehooks == NULL) - panic("if_attach: malloc"); - TAILQ_INIT(ifp->if_linkstatehooks); - ifp->if_detachhooks = malloc(sizeof(*ifp->if_detachhooks), - M_TEMP, M_NOWAIT); - if (ifp->if_detachhooks == NULL) - panic("if_attach: malloc"); - TAILQ_INIT(ifp->if_detachhooks); + if_attach_common(ifp); #if NCARP > 0 if (ifp->if_type != IFT_CARP) @@ -481,6 +444,32 @@ if_attach(struct ifnet *ifp) } void +if_attach_common(struct ifnet *ifp) +{ + + if (if_index == 0) { + TAILQ_INIT(&ifnet); + TAILQ_INIT(&ifg_head); + } + TAILQ_INIT(&ifp->if_addrlist); + ifp->if_addrhooks = malloc(sizeof(*ifp->if_addrhooks), + M_TEMP, M_NOWAIT); + if (ifp->if_addrhooks == NULL) + panic("if_attach_common: malloc"); + TAILQ_INIT(ifp->if_addrhooks); + ifp->if_linkstatehooks = malloc(sizeof(*ifp->if_linkstatehooks), + M_TEMP, M_NOWAIT); + if (ifp->if_linkstatehooks == NULL) + panic("if_attach_common: malloc"); + TAILQ_INIT(ifp->if_linkstatehooks); + ifp->if_detachhooks = malloc(sizeof(*ifp->if_detachhooks), + M_TEMP, M_NOWAIT); + if (ifp->if_detachhooks == NULL) + panic("if_attach_common: malloc"); + TAILQ_INIT(ifp->if_detachhooks); +} + +void if_start(struct ifnet *ifp) { if (IF_QFULL(&ifp->if_snd) && !ISSET(ifp->if_flags, IFF_OACTIVE)) { |