| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- --- 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]]");
- }
|