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 bb4702ecdda9b22afafea38c2968bd64c2fced36..ecb7d9ae070cc01405b49495e8b1b38eecf324fd 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 8a2f8166ff0ef13f7a871544eded2a3190fb32fe..f08a7b0bc0d6f12cb167fe72608d05fede059165 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;