mirror of
https://github.com/pi-hole/dnsmasq.git
synced 2025-12-19 18:28:25 +00:00
Use /proc/sys/net/ipv6/conf/<iface>/mtu for RA advertised MTU.
This commit is contained in:
16
src/radv.c
16
src/radv.c
@@ -193,6 +193,9 @@ static void send_ra(time_t now, int iface, char *iface_name, struct in6_addr *de
|
|||||||
struct dhcp_netid iface_id;
|
struct dhcp_netid iface_id;
|
||||||
struct dhcp_opt *opt_cfg;
|
struct dhcp_opt *opt_cfg;
|
||||||
int done_dns = 0;
|
int done_dns = 0;
|
||||||
|
#ifdef HAVE_LINUX_NETWORK
|
||||||
|
FILE *f;
|
||||||
|
#endif
|
||||||
|
|
||||||
save_counter(0);
|
save_counter(0);
|
||||||
ra = expand(sizeof(struct ra_packet));
|
ra = expand(sizeof(struct ra_packet));
|
||||||
@@ -231,13 +234,22 @@ static void send_ra(time_t now, int iface, char *iface_name, struct in6_addr *de
|
|||||||
|
|
||||||
strncpy(ifr.ifr_name, iface_name, IF_NAMESIZE);
|
strncpy(ifr.ifr_name, iface_name, IF_NAMESIZE);
|
||||||
|
|
||||||
if (ioctl(daemon->icmp6fd, SIOCGIFMTU, &ifr) != -1)
|
#ifdef HAVE_LINUX_NETWORK
|
||||||
|
/* Note that IPv6 MTU is not necessarilly the same as the IPv4 MTU
|
||||||
|
available from SIOCGIFMTU */
|
||||||
|
sprintf(daemon->namebuff, "/proc/sys/net/ipv6/conf/%s/mtu", iface_name);
|
||||||
|
if ((f = fopen(daemon->namebuff, "r")))
|
||||||
|
{
|
||||||
|
if (fgets(daemon->namebuff, MAXDNAME, f))
|
||||||
{
|
{
|
||||||
put_opt6_char(ICMP6_OPT_MTU);
|
put_opt6_char(ICMP6_OPT_MTU);
|
||||||
put_opt6_char(1);
|
put_opt6_char(1);
|
||||||
put_opt6_short(0);
|
put_opt6_short(0);
|
||||||
put_opt6_long(ifr.ifr_mtu);
|
put_opt6_long(atoi(daemon->namebuff));
|
||||||
}
|
}
|
||||||
|
fclose(f);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
iface_enumerate(AF_LOCAL, &iface, add_lla);
|
iface_enumerate(AF_LOCAL, &iface, add_lla);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user