Projects
Eulaceura:Factory
dnsmasq
_service:obs_scm:bugfix-deal-with-CONFRIM-when-...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:obs_scm:bugfix-deal-with-CONFRIM-when-binding-mac-with-ipv6.patch of Package dnsmasq
From 068fe05737fe86185b5d55da7de6ea6b2668c911 Mon Sep 17 00:00:00 2001 From: liaichun <liaichun@huawei.com> Date: Mon, 20 Apr 2020 16:17:24 +0800 Subject: [PATCH] bugfix-deal-with-CONFRIM-when-binding-mac-with-ipv6 --- src/rfc3315.c | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/src/rfc3315.c b/src/rfc3315.c index 004ebb8..8c22ded 100644 --- a/src/rfc3315.c +++ b/src/rfc3315.c @@ -1077,12 +1077,32 @@ static int dhcp6_no_relay(struct state *state, int msg_type, unsigned char *inbu case DHCP6CONFIRM: { int good_addr = 0, bad_addr = 0; + int find_bind = 0; + struct dhcp_config *find_config = NULL; /* set reply message type */ outmsgtype = DHCP6REPLY; log6_quiet(state, "DHCPCONFIRM", NULL, NULL); - + + if(daemon->bind_mac_with_ip6) { + if(state->mac) { + for (find_config = daemon->dhcp_conf; find_config; find_config = find_config->next) + if (config_has_mac(find_config, state->mac, state->mac_len, state->mac_type) && have_config(find_config, CONFIG_ADDR6)) { + find_bind = 1; + break; + } + } + /* requires all mac has binding ipv6 address. */ + if (find_bind == 0) { + o1 = new_opt6(OPTION6_STATUS_CODE); + put_opt6_short(DHCP6NOTONLINK); + put_opt6_string(_("confirm failed, no binding found")); + end_opt6(o1); + return 1; + } + } + for (opt = state->packet_options; opt; opt = opt6_next(opt, state->end)) { void *ia_option, *ia_end; @@ -1106,6 +1126,16 @@ static int dhcp6_no_relay(struct state *state, int msg_type, unsigned char *inbu good_addr = 1; log6_quiet(state, "DHCPREPLY", &req_addr, state->hostname); } + + if(daemon->bind_mac_with_ip6) { + if (!is_same_net6(&req_addr, &find_config->addr6, 128)) { + o1 = new_opt6(OPTION6_STATUS_CODE); + put_opt6_short(DHCP6NOTONLINK); + put_opt6_string(_("confirm failed, not binding to this address")); + end_opt6(o1); + return 1; + } + } } } -- 2.33.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2