From 75c3e6502bce4f88dd2750f3cc2814a2522ecf06 Mon Sep 17 00:00:00 2001 From: Kozlov Dmitry Date: Fri, 3 Aug 2012 14:48:20 +0400 Subject: ipoe: configure giaddr only if ifcfg=1 --- accel-pppd/ctrl/ipoe/ipoe.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) (limited to 'accel-pppd/ctrl/ipoe/ipoe.c') diff --git a/accel-pppd/ctrl/ipoe/ipoe.c b/accel-pppd/ctrl/ipoe/ipoe.c index 14e8d37..a707bd9 100644 --- a/accel-pppd/ctrl/ipoe/ipoe.c +++ b/accel-pppd/ctrl/ipoe/ipoe.c @@ -1232,20 +1232,23 @@ static void add_interface(const char *ifname, int ifindex, const char *opt) serv->dhcpv4 = NULL; } - serv->opt_up = opt_up; - serv->opt_mode = opt_mode; - serv->opt_ifcfg = opt_ifcfg; - if (serv->dhcpv4_relay && (serv->dhcpv4_relay->addr != relay_addr || serv->dhcpv4_relay->giaddr != giaddr)) { - ipoe_serv_del_addr(serv, serv->dhcpv4_relay->giaddr); + if (serv->opt_ifcfg) + ipoe_serv_del_addr(serv, serv->dhcpv4_relay->giaddr); dhcpv4_relay_free(serv->dhcpv4_relay, &serv->ctx); serv->dhcpv4_relay = NULL; } if (serv->opt_dhcpv4 && opt_relay && opt_giaddr) - ipoe_serv_add_addr(serv, serv->dhcpv4_relay->giaddr); + if (opt_ifcfg) + ipoe_serv_add_addr(serv, serv->dhcpv4_relay->giaddr); serv->dhcpv4_relay = dhcpv4_relay_create(opt_relay, opt_giaddr, &serv->ctx, (triton_event_func)ipoe_recv_dhcpv4_relay); + + serv->opt_up = opt_up; + serv->opt_mode = opt_mode; + serv->opt_ifcfg = opt_ifcfg; + if (str0) _free(str0); @@ -1276,7 +1279,8 @@ static void add_interface(const char *ifname, int ifindex, const char *opt) serv->dhcpv4->recv = ipoe_recv_dhcpv4; if (opt_relay && opt_giaddr) { - ipoe_serv_add_addr(serv, giaddr); + if (opt_ifcfg) + ipoe_serv_add_addr(serv, giaddr); serv->dhcpv4_relay = dhcpv4_relay_create(opt_relay, opt_giaddr, &serv->ctx, (triton_event_func)ipoe_recv_dhcpv4_relay); } } @@ -1590,10 +1594,10 @@ static void ipoe_init(void) triton_event_register_handler(EV_CONFIG_RELOAD, (triton_event_func)load_config); #ifdef RADIUS - /*if (triton_module_loaded("radius")) { + if (triton_module_loaded("radius")) { triton_event_register_handler(EV_RADIUS_ACCESS_ACCEPT, (triton_event_func)ev_radius_access_accept); triton_event_register_handler(EV_RADIUS_COA, (triton_event_func)ev_radius_coa); - }*/ + } #endif } -- cgit v1.2.3