2 changed files with 56 additions and 1 deletions
@ -0,0 +1,53 @@ |
|||||||
|
--- relay/dhcrelay.c-orig Sat Apr 27 05:34:20 2002
|
||||||
|
+++ relay/dhcrelay.c Wed Feb 19 12:44:19 2003
|
||||||
|
@@ -88,6 +88,7 @@
|
||||||
|
did not match any known circuit ID. */
|
||||||
|
int missing_circuit_id = 0; /* Circuit ID option in matching RAI option
|
||||||
|
was missing. */
|
||||||
|
+int max_hop_count = 4; /* Maximum hop count */
|
||||||
|
|
||||||
|
/* Maximum size of a packet with agent options added. */
|
||||||
|
int dhcp_max_agent_option_packet_length = 576;
|
||||||
|
@@ -182,6 +183,15 @@
|
||||||
|
quiet_interface_discovery = 1;
|
||||||
|
} else if (!strcmp (argv [i], "-a")) {
|
||||||
|
add_agent_options = 1;
|
||||||
|
+ } else if (!strcmp (argv [i], "-c")) {
|
||||||
|
+ int hcount;
|
||||||
|
+ if (++i == argc)
|
||||||
|
+ usage ();
|
||||||
|
+ hcount = atoi(argv[i]);
|
||||||
|
+ if (hcount <= 16)
|
||||||
|
+ max_hop_count = hcount;
|
||||||
|
+ else
|
||||||
|
+ usage ();
|
||||||
|
} else if (!strcmp (argv [i], "-A")) {
|
||||||
|
if (++i == argc)
|
||||||
|
usage ();
|
||||||
|
@@ -425,6 +435,17 @@
|
||||||
|
packet -> giaddr = ip -> primary_address;
|
||||||
|
if (packet -> hops != 255)
|
||||||
|
packet -> hops = packet -> hops + 1;
|
||||||
|
+
|
||||||
|
+ /* ftp://ftp.rfc-editor.org/in-notes/rfc1542.txt
|
||||||
|
+ * 4.1.1 BOOTREQUEST Messages
|
||||||
|
+ * The relay agent MUST silently discard BOOTREQUEST messages whose
|
||||||
|
+ * 'hops' field exceeds the value 16. A configuration option SHOULD be
|
||||||
|
+ * provided to set this threshold to a smaller value if desired by the
|
||||||
|
+ * network manager. The default setting for a configurable threshold
|
||||||
|
+ * SHOULD be 4.
|
||||||
|
+ */
|
||||||
|
+ if (packet -> hops >= max_hop_count)
|
||||||
|
+ return;
|
||||||
|
|
||||||
|
/* Otherwise, it's a BOOTREQUEST, so forward it to all the
|
||||||
|
servers. */
|
||||||
|
@@ -470,7 +470,7 @@
|
||||||
|
static void usage ()
|
||||||
|
{
|
||||||
|
log_fatal ("Usage: dhcrelay [-p <port>] [-d] [-D] [-i %s%s%s",
|
||||||
|
- "interface]\n ",
|
||||||
|
+ "interface] [-c max_hop_count]\n ",
|
||||||
|
"[-q] [-a] [-A length] [-m append|replace|forward|discard]\n",
|
||||||
|
" [server1 [... serverN]]");
|
||||||
|
}
|
||||||
Loading…
Reference in new issue