From 6c6e40184caef7a4d11ee5b0fa23cef8166072f2 Mon Sep 17 00:00:00 2001 From: Kozlov Dmitry Date: Mon, 29 Aug 2011 01:17:25 +0400 Subject: ppp: ipv6cp: fix initial ConfReq interface-id handling --- accel-pppd/ppp/ipv6cp_opt_intfid.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/accel-pppd/ppp/ipv6cp_opt_intfid.c b/accel-pppd/ppp/ipv6cp_opt_intfid.c index 389880a6..561d1e8c 100644 --- a/accel-pppd/ppp/ipv6cp_opt_intfid.c +++ b/accel-pppd/ppp/ipv6cp_opt_intfid.c @@ -231,16 +231,17 @@ static int ipaddr_recv_conf_req(struct ppp_ipv6cp_t *ipv6cp, struct ipv6cp_optio if (conf_accept_peer_intf_id && opt64->val) ipv6cp->ppp->ipv6->peer_intf_id = opt64->val; + else if (!ipv6cp->ppp->ipv6->peer_intf_id) { + ipv6cp->ppp->ipv6->peer_intf_id = generate_peer_intf_id(ipv6cp->ppp); + if (!ipv6cp->ppp->ipv6->peer_intf_id) + return IPV6CP_OPT_TERMACK; + } if (opt64->val && ipv6cp->ppp->ipv6->peer_intf_id == opt64->val && opt64->val != ipv6cp->ppp->ipv6->intf_id) { ipv6cp->delay_ack = ccp_ipcp_started(ipv6cp->ppp); goto ack; } - ipv6cp->ppp->ipv6->peer_intf_id = generate_peer_intf_id(ipv6cp->ppp); - if (!ipv6cp->ppp->ipv6->peer_intf_id) - return IPV6CP_OPT_TERMACK; - return IPV6CP_OPT_NAK; ack: -- cgit v1.2.3