router: fix interface mtu read error
authorHans Dedecker <dedeckeh@gmail.com>
Mon, 15 May 2017 15:40:37 +0000 (17:40 +0200)
committerHans Dedecker <dedeckeh@gmail.com>
Mon, 15 May 2017 15:42:29 +0000 (17:42 +0200)
Use integer type for mtu variable as odhcpd_get_interface_config returns
-1 when it fails to read the interface mtu. This allows to set the mtu
to a meaningfull value of 1280 in case of interface mtu read failure.

Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
src/odhcpd.h
src/router.c

index bb4702e..ecb7d9a 100644 (file)
@@ -165,7 +165,7 @@ struct interface {
        uint32_t ra_reachabletime;
        uint32_t ra_retranstime;
        uint32_t ra_hoplimit;
-       uint32_t ra_mtu;
+       int ra_mtu;
 
        // DHCPv4
        struct in_addr dhcpv4_start;
index 8a2f816..f08a7b0 100644 (file)
@@ -259,11 +259,11 @@ static uint16_t calc_ra_lifetime(struct interface *iface, uint32_t maxival)
 static uint64_t send_router_advert(struct interface *iface, const struct in6_addr *from)
 {
        time_t now = odhcpd_time();
-       uint32_t mtu = iface->ra_mtu;
+       int mtu = iface->ra_mtu;
        int hlim = iface->ra_hoplimit;
 
        if (mtu == 0)
-                mtu = odhcpd_get_interface_config(iface->ifname, "mtu");
+               mtu = odhcpd_get_interface_config(iface->ifname, "mtu");
 
        if (mtu < 1280)
                mtu = 1280;