diff options
Diffstat (limited to 'lib/libstand')
-rw-r--r-- | lib/libstand/bootp.c | 8 | ||||
-rw-r--r-- | lib/libstand/bootp.h | 1 | ||||
-rw-r--r-- | lib/libstand/globals.c | 1 | ||||
-rw-r--r-- | lib/libstand/net.h | 1 |
4 files changed, 11 insertions, 0 deletions
diff --git a/lib/libstand/bootp.c b/lib/libstand/bootp.c index 1af7bd5..f3bc816 100644 --- a/lib/libstand/bootp.c +++ b/lib/libstand/bootp.c @@ -39,6 +39,7 @@ __FBSDID("$FreeBSD$"); #include <sys/types.h> +#include <sys/endian.h> #include <netinet/in.h> #include <netinet/in_systm.h> @@ -393,6 +394,13 @@ vend_rfc1048(cp, len) val = (const char *)cp; strlcpy(hostname, val, sizeof(hostname)); } + if (tag == TAG_INTF_MTU) { + if ((val = getenv("dhcp.interface-mtu")) != NULL) { + intf_mtu = (u_int)strtoul(val, NULL, 0); + } else { + intf_mtu = be16dec(cp); + } + } #ifdef SUPPORT_DHCP if (tag == TAG_DHCP_MSGTYPE) { if(*cp != expected_dhcpmsgtype) diff --git a/lib/libstand/bootp.h b/lib/libstand/bootp.h index ed9101f..47e5649 100644 --- a/lib/libstand/bootp.h +++ b/lib/libstand/bootp.h @@ -91,6 +91,7 @@ struct bootp { #define TAG_DOMAINNAME ((unsigned char) 15) #define TAG_SWAPSERVER ((unsigned char) 16) #define TAG_ROOTPATH ((unsigned char) 17) +#define TAG_INTF_MTU ((unsigned char) 26) #ifdef SUPPORT_DHCP #define TAG_REQ_ADDR ((unsigned char) 50) diff --git a/lib/libstand/globals.c b/lib/libstand/globals.c index 0310823..8284fae 100644 --- a/lib/libstand/globals.c +++ b/lib/libstand/globals.c @@ -32,5 +32,6 @@ struct in_addr rootip; /* root ip address */ struct in_addr swapip; /* swap ip address */ struct in_addr gateip; /* swap ip address */ n_long netmask = 0xffffff00; /* subnet or net mask */ +u_int intf_mtu; /* interface mtu from bootp/dhcp */ int errno; /* our old friend */ diff --git a/lib/libstand/net.h b/lib/libstand/net.h index 94f2aab..ce7df49 100644 --- a/lib/libstand/net.h +++ b/lib/libstand/net.h @@ -83,6 +83,7 @@ extern struct in_addr swapip; extern struct in_addr gateip; extern struct in_addr nameip; extern n_long netmask; +extern u_int intf_mtu; extern int debug; /* defined in the machdep sources */ |