mirror of
https://gitlab.isc.org/isc-projects/dhcp
synced 2025-08-23 02:17:31 +00:00
- The DHCP Relay Agent Information Option / Link Selection Sub-Option
is now supported. (See RFC3527 for details). [ISC-Bugs #16251]
This commit is contained in:
parent
71b0f2cef7
commit
334bf4910f
3
RELNOTES
3
RELNOTES
@ -119,6 +119,9 @@ and for prodding me into improving it.
|
|||||||
lease. Instead, they happen on a schedule. See 'man dhcpd.conf' for the
|
lease. Instead, they happen on a schedule. See 'man dhcpd.conf' for the
|
||||||
min-balance and max-balance statements for more information.
|
min-balance and max-balance statements for more information.
|
||||||
|
|
||||||
|
- The DHCP Relay Agent Information Option / Link Selection Sub-Option
|
||||||
|
is now supported. (See RFC3527 for details).
|
||||||
|
|
||||||
Changes since 3.0.4
|
Changes since 3.0.4
|
||||||
|
|
||||||
- A warning that host statements declared within subnet or shared-network
|
- A warning that host statements declared within subnet or shared-network
|
||||||
|
@ -174,6 +174,7 @@ struct dhcp_packet {
|
|||||||
#define RAI_CIRCUIT_ID 1
|
#define RAI_CIRCUIT_ID 1
|
||||||
#define RAI_REMOTE_ID 2
|
#define RAI_REMOTE_ID 2
|
||||||
#define RAI_AGENT_ID 3
|
#define RAI_AGENT_ID 3
|
||||||
|
#define RAI_LINK_SELECT 5
|
||||||
|
|
||||||
/* FQDN suboptions: */
|
/* FQDN suboptions: */
|
||||||
#define FQDN_NO_CLIENT_UPDATE 1
|
#define FQDN_NO_CLIENT_UPDATE 1
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
|
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
static char copyright[] =
|
static char copyright[] =
|
||||||
"$Id: dhcp.c,v 1.207 2006/06/19 20:39:28 shane Exp $ Copyright (c) 2004-2006 Internet Systems Consortium. All rights reserved.\n";
|
"$Id: dhcp.c,v 1.208 2006/07/17 15:16:43 dhankins Exp $ Copyright (c) 2004-2006 Internet Systems Consortium. All rights reserved.\n";
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
|
|
||||||
#include "dhcpd.h"
|
#include "dhcpd.h"
|
||||||
@ -3902,9 +3902,15 @@ int locate_network (packet)
|
|||||||
struct subnet *subnet = (struct subnet *)0;
|
struct subnet *subnet = (struct subnet *)0;
|
||||||
struct option_cache *oc;
|
struct option_cache *oc;
|
||||||
|
|
||||||
/* See if there's a subnet selection option. */
|
/* See if there's a Relay Agent Link Selection Option, or a
|
||||||
oc = lookup_option (&dhcp_universe, packet -> options,
|
* Subnet Selection Option. The Link-Select and Subnet-Select
|
||||||
DHO_SUBNET_SELECTION);
|
* are formatted and used precisely the same, but we must prefer
|
||||||
|
* the link-select over the subnet-select.
|
||||||
|
*/
|
||||||
|
if ((oc = lookup_option(&agent_universe, packet->options,
|
||||||
|
RAI_LINK_SELECT)) == NULL)
|
||||||
|
oc = lookup_option(&dhcp_universe, packet->options,
|
||||||
|
DHO_SUBNET_SELECTION);
|
||||||
|
|
||||||
/* If there's no SSO and no giaddr, then use the shared_network
|
/* If there's no SSO and no giaddr, then use the shared_network
|
||||||
from the interface, if there is one. If not, fail. */
|
from the interface, if there is one. If not, fail. */
|
||||||
@ -3918,8 +3924,9 @@ int locate_network (packet)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If there's an SSO, and it's valid, use it to figure out the
|
/* If there's an option indicating link connection, and it's valid,
|
||||||
subnet. If it's not valid, fail. */
|
* use it to figure out the subnet. If it's not valid, fail.
|
||||||
|
*/
|
||||||
if (oc) {
|
if (oc) {
|
||||||
memset (&data, 0, sizeof data);
|
memset (&data, 0, sizeof data);
|
||||||
if (!evaluate_option_cache (&data, packet, (struct lease *)0,
|
if (!evaluate_option_cache (&data, packet, (struct lease *)0,
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
|
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
static char copyright[] =
|
static char copyright[] =
|
||||||
"$Id: stables.c,v 1.30 2006/06/15 17:49:49 dhankins Exp $ Copyright (c) 2004 Internet Systems Consortium. All rights reserved.\n";
|
"$Id: stables.c,v 1.31 2006/07/17 15:16:43 dhankins Exp $ Copyright (c) 2004 Internet Systems Consortium. All rights reserved.\n";
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
|
|
||||||
#include "dhcpd.h"
|
#include "dhcpd.h"
|
||||||
@ -178,6 +178,7 @@ static struct option agent_options[] = {
|
|||||||
{ "remote-id", "X", &agent_universe, 2, 1 },
|
{ "remote-id", "X", &agent_universe, 2, 1 },
|
||||||
{ "agent-id", "I", &agent_universe, 3, 1 },
|
{ "agent-id", "I", &agent_universe, 3, 1 },
|
||||||
{ "DOCSIS-device-class", "L", &agent_universe, 4, 1 },
|
{ "DOCSIS-device-class", "L", &agent_universe, 4, 1 },
|
||||||
|
{ "link-selection", "I", &agent_universe, 5, 1 },
|
||||||
{ NULL, NULL, NULL, 0, 0 }
|
{ NULL, NULL, NULL, 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user