From d418fd9ce97fff1014d53a334921131138117804 Mon Sep 17 00:00:00 2001 From: Thomas Lotterer Date: Wed, 19 Feb 2003 12:57:05 +0000 Subject: [PATCH] towards SA-2003.012-dhcpd; CAN-2003-0039 --- dhcpd/dhcpd.patch | 53 +++++++++++++++++++++++++++++++++++++++++++++++ dhcpd/dhcpd.spec | 4 +++- 2 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 dhcpd/dhcpd.patch diff --git a/dhcpd/dhcpd.patch b/dhcpd/dhcpd.patch new file mode 100644 index 0000000000..4dca298b76 --- /dev/null +++ b/dhcpd/dhcpd.patch @@ -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 ] [-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]]"); + } diff --git a/dhcpd/dhcpd.spec b/dhcpd/dhcpd.spec index b941652a04..a1d0e8793b 100644 --- a/dhcpd/dhcpd.spec +++ b/dhcpd/dhcpd.spec @@ -33,12 +33,13 @@ Distribution: OpenPKG [BASE] Group: DNS License: ISC/BSD Version: 3.0.1rc11 -Release: 20030116 +Release: 20030219 # list of sources Source0: ftp://ftp.isc.org/isc/dhcp/dhcp-%{version}.tar.gz Source1: dhcpd.conf Source2: rc.dhcpd +Patch0: dhcpd.patch # build information Prefix: %{l_prefix} @@ -53,6 +54,7 @@ AutoReqProv: no %prep %setup -q -n dhcp-%{version} + %patch %build ( echo 'CC = %{l_cc}'