diff options
| author | Kozlov Dmitry <xeb@mail.ru> | 2013-01-25 11:41:00 +0400 |
|---|---|---|
| committer | Kozlov Dmitry <xeb@mail.ru> | 2013-01-25 11:41:00 +0400 |
| commit | 4e7ed29422fa958ebba78774f6a7745a303eb997 (patch) | |
| tree | 12e424266420a8bc967d8cc1ae7e85b1e9d790d2 /accel-pppd/ctrl/ipoe/ipoe.c | |
| parent | e5e85219bb6a64d80a962866c9ba993b9562c7d3 (diff) | |
| download | accel-ppp-4e7ed29422fa958ebba78774f6a7745a303eb997.tar.gz accel-ppp-4e7ed29422fa958ebba78774f6a7745a303eb997.zip | |
ipoe: insert option 82 to relay request
Diffstat (limited to 'accel-pppd/ctrl/ipoe/ipoe.c')
| -rw-r--r-- | accel-pppd/ctrl/ipoe/ipoe.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/accel-pppd/ctrl/ipoe/ipoe.c b/accel-pppd/ctrl/ipoe/ipoe.c index a830240e..74d2f90a 100644 --- a/accel-pppd/ctrl/ipoe/ipoe.c +++ b/accel-pppd/ctrl/ipoe/ipoe.c @@ -72,6 +72,7 @@ static int conf_netmask = 24; static int conf_lease_time = 600; static int conf_lease_timeout = 660; static int conf_verbose; +static const char *conf_agent_remote_id; static unsigned int stat_starting; static unsigned int stat_active; @@ -400,6 +401,11 @@ static void ipoe_session_start(struct ipoe_session *ses) } if (ses->dhcpv4_request && ses->serv->dhcpv4_relay) { + if (!ses->dhcpv4_request->relay_agent && dhcpv4_packet_insert_opt82(ses->dhcpv4_request, ses->serv->ifname, conf_agent_remote_id)) { + ap_session_terminate(&ses->ses, TERM_NAS_ERROR, 0); + return; + } + dhcpv4_relay_send(ses->serv->dhcpv4_relay, ses->dhcpv4_request, ses->relay_server_id); ses->timer.expire = ipoe_session_timeout; @@ -1695,6 +1701,12 @@ static void load_config(void) conf_mode = MODE_L2; conf_relay = conf_get_opt("ipoe", "relay"); + + opt = conf_get_opt("ipoe", "agent-remote-id"); + if (opt) + conf_agent_remote_id = opt; + else + conf_agent_remote_id = "accel-pppd"; conf_dhcpv4 = 0; conf_up = 0; |
