--Apple-Mail=_665FA1C9-BEA3-4176-A01B-836975C24DE4
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
charset=us-ascii
I am attaching a patch for those that wish to test or provide feedback. =
Currently there is no support for adjusting the MTU on an interface a =
diskless client boots from. Additionally if you attempt to adjust the =
MTU on the interface with ifconfig after the system comes up, the result =
is only cosmetic and the booting interface still cannot pass frames =
larger than 1500 bytes.
There is a RFC standard DHCP TAG to provide a hit to a client what =
interface MTU should be set to. The attached patch will use this DHCP =
option in bootp and set the interface MTU accordingly. This allows =
diskless clients to be booted on a jumbo frame enabled network. =20
Before using this, make sure your network and NIC is jumbo frame =
enabled/capable.
Additionally the attached patch removes the client from setting itself =
as the gateway (proxy-arp) if there is no router provided from DHCP. =
The reasoning behind this is that it is more common for hosts to be =
multi-homed and that the booting interface may not necissarily be the =
interface a gateway is to be installed on. My erroneously setting =
gateway to hosts self, a default route cannot be easily changed at boot =
time. If the host needs to set itself as the gateway, return that in an =
option in DHCP.
For tracking:
PR: http://www.freebsd.org/cgi/query-pr.cgi?pr=3Dmisc/187094
(should probably be moved from misc to kern)
Patch is against: 10.0-RELEASE r261846
--
Robert Blayzor
Network Architect & Engineer
CCIE 42148 (SP)
rblayzor@inoc.net
INOC, LLC
80 State Street, 7th Flr
Albany, NY 12207
USA
--Apple-Mail=_665FA1C9-BEA3-4176-A01B-836975C24DE4
Content-Disposition: attachment;
filename=bootp_subr.diff
Content-Type: application/octet-stream;
x-unix-mode=0644;
name="bootp_subr.diff"
Content-Transfer-Encoding: 7bit
Index: sys/nfs/bootp_subr.c
===================================================================
--- sys/nfs/bootp_subr.c (revision 261846)
+++ sys/nfs/bootp_subr.c (working copy)
@@ -196,6 +196,8 @@
#define TAG_HOSTNAME 12 /* Client host name */
#define TAG_ROOT 17 /* Root path */
+#define TAG_INTF_MTU 26 /* Interface MTU Size (RFC2132) */
+
/* DHCP specific tags */
#define TAG_OVERLOAD 52 /* Option Overload */
#define TAG_MAXMSGSIZE 57 /* Maximum DHCP Message Size */
@@ -229,6 +231,8 @@
#endif
static char bootp_cookie[128];
+static unsigned int bootp_ifmtu = 0;
+
static struct socket *bootp_so;
SYSCTL_STRING(_kern, OID_AUTO, bootp_cookie, CTLFLAG_RD,
bootp_cookie, 0, "Cookie (T134) supplied by bootp server");
@@ -1030,7 +1034,22 @@
return (0);
}
- printf("Adjusted interface %s\n", ifctx->ireq.ifr_name);
+ printf("Adjusted interface %s", ifctx->ireq.ifr_name);
+
+ /* Do BOOTP interface options */
+ if (bootp_ifmtu != 0) {
+ printf(" (MTU=%d", bootp_ifmtu);
+ if (bootp_ifmtu > 1514)
+ printf("/JUMBO");
+ printf(")");
+
+ ifr->ifr_mtu = bootp_ifmtu;
+ error = ifioctl(bootp_so, SIOCSIFMTU, (caddr_t) ifr, td);
+ if (error != 0)
+ panic("%s: SIOCSIFMTU, error=%d", __func__, error);
+ }
+ printf("\n");
+
/*
* Do enough of ifconfig(8) so that the chosen interface
* can talk to the servers. (just set the address)
@@ -1053,7 +1072,12 @@
/* Add new default route */
- if (ifctx->gotgw != 0 || gctx->gotgw == 0) {
+ /* Only set default route if we received one in the request.
+ Proxy ARP considered obsolete. More valid to NOT set
+ a router in request as the host may be multi-homed and
+ gateway may not be on this interface.
+ */
+ if (ifctx->gotgw != 0 || gctx->gotgw != 0) {
clear_sinaddr(&defdst);
clear_sinaddr(&defmask);
/* XXX MRT just table 0 */
@@ -1518,6 +1542,11 @@
p[i] = '\0';
}
+ p = bootpc_tag(&gctx->tag, &ifctx->reply, ifctx->replylen,
+ TAG_INTF_MTU);
+ if (p != NULL) {
+ bootp_ifmtu = (((unsigned char)p[0] << 8) + (unsigned char)p[1]);
+ }
printf("\n");
--Apple-Mail=_665FA1C9-BEA3-4176-A01B-836975C24DE4
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "freebsd-stable-unsubscribe@freebsd.org"
--Apple-Mail=_665FA1C9-BEA3-4176-A01B-836975C24DE4--