Set hostname /after/ having read the config file.
[l2tpns.git] / l2tpns.c
index 9576137..31a183a 100644 (file)
--- a/l2tpns.c
+++ b/l2tpns.c
@@ -446,13 +446,17 @@ static void routeset(sessionidt s, in_addr_t ip, int prefixlen, in_addr_t gw, in
                req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE | NLM_F_REPLACE;
        }
        else
+       {
                req.nh.nlmsg_type = RTM_DELROUTE;
+               req.nh.nlmsg_flags = NLM_F_REQUEST;
+       }
+
        req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.rt));
 
        req.rt.rtm_family = AF_INET;
        req.rt.rtm_dst_len = prefixlen;
        req.rt.rtm_table = RT_TABLE_MAIN;
-       req.rt.rtm_protocol = RTPROT_BOOT; // XXX
+       req.rt.rtm_protocol = 42;
        req.rt.rtm_scope = RT_SCOPE_LINK;
        req.rt.rtm_type = RTN_UNICAST;
 
@@ -521,13 +525,17 @@ void route6set(sessionidt s, struct in6_addr ip, int prefixlen, int add)
                req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE | NLM_F_REPLACE;
        }
        else
+       {
                req.nh.nlmsg_type = RTM_DELROUTE;
+               req.nh.nlmsg_flags = NLM_F_REQUEST;
+       }
+
        req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.rt));
 
        req.rt.rtm_family = AF_INET6;
        req.rt.rtm_dst_len = prefixlen;
        req.rt.rtm_table = RT_TABLE_MAIN;
-       req.rt.rtm_protocol = RTPROT_BOOT; // XXX
+       req.rt.rtm_protocol = 42;
        req.rt.rtm_scope = RT_SCOPE_LINK;
        req.rt.rtm_type = RTN_UNICAST;
 
@@ -536,7 +544,7 @@ void route6set(sessionidt s, struct in6_addr ip, int prefixlen, int add)
        metric = 1;
        netlink_addattr(&req.nh, RTA_METRICS, &metric, sizeof(metric));
 
-       LOG(1, 0, 0, "Route %s %s/%d\n",
+       LOG(1, s, 0, "Route %s %s/%d\n",
            add ? "add" : "del",
            inet_ntop(AF_INET6, &ip, ipv6addr, INET6_ADDRSTRLEN),
            prefixlen);
@@ -2951,7 +2959,7 @@ void processudp(uint8_t *buf, int len, struct sockaddr_in *addr)
 
                                        // Set multilink options before sending initial LCP packet
                                        sess_local[s].mp_mrru = 1614;
-                                       sess_local[s].mp_epdis = config->bind_address ? config->bind_address : my_address;
+                                       sess_local[s].mp_epdis = ntohl(config->bind_address ? config->bind_address : my_address);
 
                                        sendlcp(s, t);
                                        change_state(s, lcp, RequestSent);
@@ -4286,14 +4294,9 @@ static void initdata(int optdebug, char *optconfig)
 
        if (!*hostname)
        {
-               if (!*config->hostname)
-               {
-                       // Grab my hostname unless it's been specified
-                       gethostname(hostname, sizeof(hostname));
-                       stripdomain(hostname);
-               }
-               else
-                       strcpy(hostname, config->hostname);
+               // Grab my hostname unless it's been specified
+               gethostname(hostname, sizeof(hostname));
+               stripdomain(hostname);
        }
 
        _statistics->start_time = _statistics->last_reset = time(NULL);
@@ -4708,8 +4711,12 @@ int main(int argc, char *argv[])
        initplugins();
        initdata(optdebug, optconfig);
 
-       init_cli(hostname);
+       init_cli();
        read_config_file();
+       /* set hostname /after/ having read the config file */
+       if (*config->hostname)
+               strcpy(hostname, config->hostname);
+       cli_init_hostname(hostname);
        update_config();
        init_tbf(config->num_tbfs);