From 11addc80eda74b267e4f9d670688b15350283eda Mon Sep 17 00:00:00 2001 From: Guillaume Nault Date: Wed, 7 Nov 2018 19:28:59 +0100 Subject: ipcp: reject *-NBNS-Address if we have no value to propose If wins_opt->addr is NULL, then we have no address to propose (none defined in accel-ppp.conf and none provided by RADIUS). Currently, in that case, accel-ppp accepts and acks the address found in the peer's configuration request. But the peer would normally use the undefined IP address, so if we ack it, we explicitely tell the peer that 0.0.0.0 is the primary/secondary NBNS server. If the peer already knows a NBNS server IP address, it doesn't have to negociate it with accel-ppp. It can just use it directly, after it retrieved its own IP address. Therefore there is no need for accel-ppp to blindly accept addresses proposed by the peer. This patch rejects *-NBNS-Address if accel-ppp has no NBNS server to propose, making it explicit to the peer that its request can't be satisfied. Signed-off-by: Guillaume Nault --- accel-pppd/ppp/ipcp_opt_wins.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'accel-pppd/ppp/ipcp_opt_wins.c') diff --git a/accel-pppd/ppp/ipcp_opt_wins.c b/accel-pppd/ppp/ipcp_opt_wins.c index da4dc9b..e445646 100644 --- a/accel-pppd/ppp/ipcp_opt_wins.c +++ b/accel-pppd/ppp/ipcp_opt_wins.c @@ -102,10 +102,8 @@ static int wins_recv_conf_req(struct ppp_ipcp_t *ipcp, struct ipcp_option_t *opt if (opt32->hdr.len != 6) return IPCP_OPT_REJ; - if (!wins_opt->addr) { - wins_opt->addr = opt32->val; - return IPCP_OPT_ACK; - } + if (!wins_opt->addr) + return IPCP_OPT_REJ; if (wins_opt->addr == opt32->val) return IPCP_OPT_ACK; -- cgit v1.2.3