You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.8 KiB
53 lines
1.8 KiB
--- 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]]"); |
|
}
|
|
|