X-Git-Url: http://git.sameswireless.fr/l2tpns.git/blobdiff_plain/7d4d3c7bcaea62121eaa60dce83c6d8209328838..0b06de8105dd567cb2d120770b2101afacce5f33:/l2tpns.c diff --git a/l2tpns.c b/l2tpns.c index 9576137..31a183a 100644 --- 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);