fc5dafc79b
the link level name for the interface (ifp->if_sadl) is allocated before ifp->if_addrlen is initialized, which could lead to allocating too little space for the link level address. Do this by splitting allocation of the link level name out of if_attach() and into if_alloc_sadl(), which is normally called by functions like ether_ifattach(). Network interfaces which don't have a link-specific attach routine must call if_alloc_sadl() themselves (example: gif). Link level names are freed by if_free_sadl(), which can be called from e.g. ether_ifdetach(). Drivers never need call if_free_sadl() themselves as if_detach() will do it if it is not already done. While here, add the ability to pass an AF_LINK address to SIOCSIFADDR in ether_ioctl() (this is what caused me to notice the problem that the above fixes). |
||
---|---|---|
.. | ||
i4b_cause.h | ||
i4b_ctl.c | ||
i4b_debug.h | ||
i4b_global.h | ||
i4b_i4bdrv.c | ||
i4b_iframe.c | ||
i4b_ioctl.h | ||
i4b_ipr.c | ||
i4b_isdnq931.h | ||
i4b_isppp.c | ||
i4b_isppp.h | ||
i4b_l1l2.h | ||
i4b_l2.c | ||
i4b_l2.h | ||
i4b_l2fsm.c | ||
i4b_l2fsm.h | ||
i4b_l2if.c | ||
i4b_l2l3.h | ||
i4b_l2timer.c | ||
i4b_l3.h | ||
i4b_l3fsm.c | ||
i4b_l3fsm.h | ||
i4b_l3l4.h | ||
i4b_l3timer.c | ||
i4b_l4.c | ||
i4b_l4.h | ||
i4b_l4if.c | ||
i4b_l4mgmt.c | ||
i4b_l4timer.c | ||
i4b_lme.c | ||
i4b_mbuf.c | ||
i4b_mbuf.h | ||
i4b_q931.c | ||
i4b_q931.h | ||
i4b_q932fac.c | ||
i4b_q932fac.h | ||
i4b_rbch_ioctl.h | ||
i4b_rbch.c | ||
i4b_sframe.c | ||
i4b_tei.c | ||
i4b_tel_ioctl.h | ||
i4b_tel.c | ||
i4b_trace.c | ||
i4b_trace.h | ||
i4b_uframe.c | ||
i4b_util.c | ||
Makefile |