conf, dhcp, ndp: Fix message about default MTU, make NDP consistent
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
parent
8e9333616a
commit
ec2b58ea4d
3 changed files with 16 additions and 4 deletions
15
conf.c
15
conf.c
|
@ -617,7 +617,9 @@ static void usage(const char *name)
|
||||||
info(" /tmp/passt_ISO8601-TIMESTAMP_INSTANCE-NUMBER.pcap");
|
info(" /tmp/passt_ISO8601-TIMESTAMP_INSTANCE-NUMBER.pcap");
|
||||||
|
|
||||||
info( " -m, --mtu MTU Assign MTU via DHCP/NDP");
|
info( " -m, --mtu MTU Assign MTU via DHCP/NDP");
|
||||||
info( " default: no MTU assigned via DHCP/NDP options");
|
info( " a zero value disables assignment");
|
||||||
|
info( " default: 65520: maximum 802.3 MTU minus 802.3 header");
|
||||||
|
info( " length, rounded to 32 bits (IPv4 words)");
|
||||||
info( " -a, --address ADDR Assign IPv4 or IPv6 address ADDR");
|
info( " -a, --address ADDR Assign IPv4 or IPv6 address ADDR");
|
||||||
info( " can be specified zero to two times (for IPv4 and IPv6)");
|
info( " can be specified zero to two times (for IPv4 and IPv6)");
|
||||||
info( " default: use addresses from interface with default route");
|
info( " default: use addresses from interface with default route");
|
||||||
|
@ -954,6 +956,12 @@ void conf(struct ctx *c, int argc, char **argv)
|
||||||
|
|
||||||
errno = 0;
|
errno = 0;
|
||||||
c->mtu = strtol(optarg, NULL, 0);
|
c->mtu = strtol(optarg, NULL, 0);
|
||||||
|
|
||||||
|
if (!c->mtu) {
|
||||||
|
c->mtu = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (c->mtu < ETH_MIN_MTU || c->mtu > (int)ETH_MAX_MTU ||
|
if (c->mtu < ETH_MIN_MTU || c->mtu > (int)ETH_MAX_MTU ||
|
||||||
errno) {
|
errno) {
|
||||||
err("Invalid MTU: %s", optarg);
|
err("Invalid MTU: %s", optarg);
|
||||||
|
@ -1132,6 +1140,11 @@ void conf(struct ctx *c, int argc, char **argv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!c->mtu) {
|
||||||
|
c->mtu = (ETH_MAX_MTU - ETH_HLEN) /
|
||||||
|
sizeof(uint32_t) * sizeof(uint32_t);
|
||||||
|
}
|
||||||
|
|
||||||
get_routes(c);
|
get_routes(c);
|
||||||
get_addrs(c);
|
get_addrs(c);
|
||||||
|
|
||||||
|
|
3
dhcp.c
3
dhcp.c
|
@ -49,7 +49,6 @@ struct opt {
|
||||||
static struct opt opts[255] = {
|
static struct opt opts[255] = {
|
||||||
[1] = { 0, 4, { 0 }, 0, { 0 }, }, /* Mask */
|
[1] = { 0, 4, { 0 }, 0, { 0 }, }, /* Mask */
|
||||||
[3] = { 0, 4, { 0 }, 0, { 0 }, }, /* Router */
|
[3] = { 0, 4, { 0 }, 0, { 0 }, }, /* Router */
|
||||||
[26] = { 0, 2, { 0xff, 0xf0 }, 0, { 0 }, }, /* MTU */
|
|
||||||
[51] = { 0, 4, { 0xff, 0xff, 0xff, 0xff }, 0, { 0 }, }, /* Lease time */
|
[51] = { 0, 4, { 0xff, 0xff, 0xff, 0xff }, 0, { 0 }, }, /* Lease time */
|
||||||
[53] = { 0, 1, { 0 }, 0, { 0 }, }, /* Type */
|
[53] = { 0, 1, { 0 }, 0, { 0 }, }, /* Type */
|
||||||
#define DHCPDISCOVER 1
|
#define DHCPDISCOVER 1
|
||||||
|
@ -319,7 +318,7 @@ int dhcp(struct ctx *c, struct ethhdr *eh, size_t len)
|
||||||
*(unsigned long *)&opts[121].s[10] = c->gw4;
|
*(unsigned long *)&opts[121].s[10] = c->gw4;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (c->mtu) {
|
if (c->mtu != -1) {
|
||||||
opts[26].slen = 2;
|
opts[26].slen = 2;
|
||||||
opts[26].s[0] = c->mtu / 256;
|
opts[26].s[0] = c->mtu / 256;
|
||||||
opts[26].s[1] = c->mtu % 256;
|
opts[26].s[1] = c->mtu % 256;
|
||||||
|
|
2
ndp.c
2
ndp.c
|
@ -116,7 +116,7 @@ int ndp(struct ctx *c, struct ethhdr *eh, size_t len)
|
||||||
memcpy(p, &c->addr6, 8); /* prefix */
|
memcpy(p, &c->addr6, 8); /* prefix */
|
||||||
p += 16;
|
p += 16;
|
||||||
|
|
||||||
if (c->mtu) {
|
if (c->mtu != -1) {
|
||||||
*p++ = 5; /* type */
|
*p++ = 5; /* type */
|
||||||
*p++ = 1; /* length */
|
*p++ = 1; /* length */
|
||||||
p += 2; /* reserved */
|
p += 2; /* reserved */
|
||||||
|
|
Loading…
Reference in a new issue