Page MenuHomeFreeBSD

D43709.id133754.diff
No OneTemporary

D43709.id133754.diff

diff --git a/sys/net/route/nhop_ctl.c b/sys/net/route/nhop_ctl.c
--- a/sys/net/route/nhop_ctl.c
+++ b/sys/net/route/nhop_ctl.c
@@ -753,7 +753,14 @@
bool
nhop_set_gw(struct nhop_object *nh, const struct sockaddr *gw, bool is_gw)
{
- if (gw->sa_len > sizeof(nh->gw_buf)) {
+ unsigned char sa_len;
+
+ if (gw->sa_family != AF_LINK)
+ sa_len = gw->sa_len;
+ else
+ sa_len = sizeof(struct sockaddr_dl_short);
+
+ if (sa_len > sizeof(nh->gw_buf)) {
FIB_NH_LOG(LOG_DEBUG, nh, "nhop SA size too big: AF %d len %u",
gw->sa_family, gw->sa_len);
return (false);
@@ -766,8 +773,11 @@
return (false);
}
- memcpy(&nh->gw_sa, gw, gw->sa_len);
- memset(&nh->gw_buf[gw->sa_len], 0, sizeof(nh->gw_buf) - gw->sa_len);
+ memcpy(&nh->gw_sa, gw, sa_len);
+ memset(&nh->gw_buf[sa_len], 0, sizeof(nh->gw_buf) - sa_len);
+
+ if (gw->sa_family == AF_LINK)
+ nh->gwl_sa.sdl_len = sa_len;
if (is_gw) {
nh->nh_flags |= NHF_GATEWAY;

File Metadata

Mime Type
text/plain
Expires
Thu, May 14, 4:34 PM (15 h, 33 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33046520
Default Alt Text
D43709.id133754.diff (937 B)

Event Timeline