Skip to content

Commit 504ebe6

Browse files
yaqiangzpull[bot]
authored andcommitted
[dhcp_relay] Upgrade dhcp_relay container to bookworm (#17783)
* [dhcp_relay] Update dhcp_relay to bookworm
1 parent 6bf9007 commit 504ebe6

16 files changed

+161
-213
lines changed

dockers/docker-dhcp-relay/Dockerfile.j2

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{% from "dockers/dockerfile-macros.j2" import install_debian_packages, install_python_wheels, copy_files %}
2-
FROM docker-config-engine-bullseye-{{DOCKER_USERNAME}}:{{DOCKER_USERTAG}}
2+
FROM docker-config-engine-bookworm-{{DOCKER_USERNAME}}:{{DOCKER_USERTAG}}
33

44
ARG docker_container_name
55
ARG image_version

rules/docker-dhcp-relay.mk

+3-5
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ $(DOCKER_DHCP_RELAY)_PATH = $(DOCKERS_PATH)/$(DOCKER_DHCP_RELAY_STEM)
88

99
$(DOCKER_DHCP_RELAY)_DEPENDS += $(ISC_DHCP_RELAY) $(SONIC_DHCPMON) $(SONIC_DHCPRELAY) $(LIBSWSSCOMMON) $(SONIC_RSYSLOG_PLUGIN)
1010

11-
$(DOCKER_DHCP_RELAY)_DBG_DEPENDS = $($(DOCKER_CONFIG_ENGINE_BULLSEYE)_DBG_DEPENDS)
11+
$(DOCKER_DHCP_RELAY)_DBG_DEPENDS = $($(DOCKER_CONFIG_ENGINE_BOOKWORM)_DBG_DEPENDS)
1212
$(DOCKER_DHCP_RELAY)_DBG_DEPENDS += $(ISC_DHCP_RELAY_DBG) $(SONIC_DHCPRELAY_DBG) $(SONIC_DHCPMON_DBG) $(SONIC_RSYSLOG_PLUGIN)
1313

14-
$(DOCKER_DHCP_RELAY)_DBG_IMAGE_PACKAGES = $($(DOCKER_CONFIG_ENGINE_BULLSEYE)_DBG_IMAGE_PACKAGES)
14+
$(DOCKER_DHCP_RELAY)_DBG_IMAGE_PACKAGES = $($(DOCKER_CONFIG_ENGINE_BOOKWORM)_DBG_IMAGE_PACKAGES)
1515

16-
$(DOCKER_DHCP_RELAY)_LOAD_DOCKERS = $(DOCKER_CONFIG_ENGINE_BULLSEYE)
16+
$(DOCKER_DHCP_RELAY)_LOAD_DOCKERS = $(DOCKER_CONFIG_ENGINE_BOOKWORM)
1717

1818
$(DOCKER_DHCP_RELAY)_INSTALL_PYTHON_WHEELS = $(SONIC_UTILITIES_PY3)
1919
$(DOCKER_DHCP_RELAY)_INSTALL_DEBS = $(PYTHON3_SWSSCOMMON)
@@ -29,9 +29,7 @@ $(DOCKER_DHCP_RELAY)_SERVICE_BEFORE = ntp-config
2929
$(DOCKER_DHCP_RELAY)_SERVICE_DEPENDENT_OF = swss
3030

3131
SONIC_DOCKER_IMAGES += $(DOCKER_DHCP_RELAY)
32-
SONIC_BULLSEYE_DOCKERS += $(DOCKER_DHCP_RELAY)
3332
SONIC_DOCKER_DBG_IMAGES += $(DOCKER_DHCP_RELAY_DBG)
34-
SONIC_BULLSEYE_DBG_DOCKERS += $(DOCKER_DHCP_RELAY_DBG)
3533

3634
ifeq ($(INCLUDE_KUBERNETES),y)
3735
$(DOCKER_DHCP_RELAY)_DEFAULT_FEATURE_OWNER = kube

rules/isc-dhcp.mk

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# isc-dhcp packages
22

3-
ISC_DHCP_VERSION = 4.4.1
4-
ISC_DHCP_VERSION_FULL = ${ISC_DHCP_VERSION}-2.3+deb11u2
3+
ISC_DHCP_VERSION = 4.4.3-P1
4+
ISC_DHCP_VERSION_FULL = ${ISC_DHCP_VERSION}-2
55

66
export ISC_DHCP_VERSION ISC_DHCP_VERSION_FULL
77

sonic-slave-bookworm/Dockerfile.j2

+3-1
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,9 @@ RUN apt-get update && apt-get install -y \
418418
auditd \
419419
# For protobuf
420420
protobuf-compiler \
421-
libprotobuf-dev
421+
libprotobuf-dev \
422+
# For sonic-dhcp6relay build
423+
libjsoncpp-dev
422424

423425
{%- if CROSS_BUILD_ENVIRON == "y" %}
424426
# Arm vs. amd64 versions conflict - remove amd64 packages

src/isc-dhcp/patch/0002-Customizable-Option-82-circuit-ID-and-remote-ID-fiel.patch

+16-16
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ Date: Thu, 25 Apr 2019 22:07:20 +0000
44
Subject: [PATCH] Customizable Option 82 circuit ID and remote ID fields
55

66
---
7-
relay/dhcrelay.c | 171 ++++++++++++++++++++++++++++++++++++++++-------
8-
1 file changed, 147 insertions(+), 24 deletions(-)
7+
relay/dhcrelay.c | 178 +++++++++++++++++++++++++++++++++++++++--------
8+
1 file changed, 150 insertions(+), 28 deletions(-)
99

1010
diff --git a/relay/dhcrelay.c b/relay/dhcrelay.c
11-
index 0cb2ef6..418b943 100644
11+
index 3b9c71b..19843f7 100644
1212
--- a/relay/dhcrelay.c
1313
+++ b/relay/dhcrelay.c
1414
@@ -75,6 +75,8 @@ int bad_circuit_id = 0; /* Circuit ID option in matching RAI option
@@ -20,7 +20,7 @@ index 0cb2ef6..418b943 100644
2020
int max_hop_count = 10; /* Maximum hop count */
2121

2222
int no_daemon = 0;
23-
@@ -151,10 +153,20 @@ static const char url[] =
23+
@@ -160,10 +162,20 @@ static const char url[] =
2424

2525
char *progname;
2626

@@ -42,7 +42,7 @@ index 0cb2ef6..418b943 100644
4242
" [-A <length>] [-c <hops>]\n" \
4343
" [-p <port> | -rp <relay-port>]\n" \
4444
" [-pf <pid-file>] [--no-pid]\n"\
45-
@@ -171,11 +183,11 @@ char *progname;
45+
@@ -180,11 +192,11 @@ char *progname;
4646
" -l lower0 [ ... -l lowerN]\n" \
4747
" -u upper0 [ ... -u upperN]\n" \
4848
" lower (client link): [address%%]interface[#index]\n" \
@@ -56,7 +56,7 @@ index 0cb2ef6..418b943 100644
5656
" [-A <length>] [-c <hops>] [-p <port>]\n" \
5757
" [-pf <pid-file>] [--no-pid]\n"\
5858
" [-m append|replace|forward|discard]\n" \
59-
@@ -190,13 +202,13 @@ char *progname;
59+
@@ -199,13 +211,13 @@ char *progname;
6060
" -l lower0 [ ... -l lowerN]\n" \
6161
" -u upper0 [ ... -u upperN]\n" \
6262
" lower (client link): [address%%]interface[#index]\n" \
@@ -72,10 +72,10 @@ index 0cb2ef6..418b943 100644
7272
" [-p <port> | -rp <relay-port>]\n" \
7373
" [-pf <pid-file>] [--no-pid]\n" \
7474
" [-m append|replace|forward|discard]\n" \
75-
@@ -204,18 +216,18 @@ char *progname;
75+
@@ -213,18 +225,18 @@ char *progname;
7676
" [-iu interface0 [ ... -iu interfaceN]\n" \
7777
" [-id interface0 [ ... -id interfaceN]\n" \
78-
" [-U interface]\n" \
78+
" [-U interface] [-g <ip-address>]\n" \
7979
-" server0 [ ... serverN]\n\n" \
8080
+" server0 [ ... serverN]\n\n" DHCRELAY_OPTION82_USAGE \
8181
" %s {--version|--help|-h}"
@@ -88,13 +88,13 @@ index 0cb2ef6..418b943 100644
8888
" [-i interface0 [ ... -i interfaceN]\n" \
8989
" [-iu interface0 [ ... -iu interfaceN]\n" \
9090
" [-id interface0 [ ... -id interfaceN]\n" \
91-
" [-U interface]\n" \
91+
" [-U interface] [-g <ip-address>]\n" \
9292
-" server0 [ ... serverN]\n\n" \
9393
+" server0 [ ... serverN]\n\n" DHCRELAY_OPTION82_USAGE \
9494
" %s {--version|--help|-h}"
9595
#endif
9696
#endif
97-
@@ -471,6 +483,15 @@ main(int argc, char **argv) {
97+
@@ -480,6 +492,15 @@ main(int argc, char **argv) {
9898
local_family_set = 1;
9999
local_family = AF_INET;
100100
#endif
@@ -110,7 +110,7 @@ index 0cb2ef6..418b943 100644
110110
add_agent_options = 1;
111111
} else if (!strcmp(argv[i], "-A")) {
112112
#ifdef DHCPv6
113-
@@ -1171,6 +1192,81 @@ find_interface_by_agent_option(struct dhcp_packet *packet,
113+
@@ -1207,6 +1228,81 @@ find_interface_by_agent_option(struct dhcp_packet *packet,
114114
return (-1);
115115
}
116116

@@ -192,7 +192,7 @@ index 0cb2ef6..418b943 100644
192192
/*
193193
* Examine a packet to see if it's a candidate to have a Relay
194194
* Agent Information option tacked onto its tail. If it is, tack
195-
@@ -1180,9 +1276,12 @@ static int
195+
@@ -1216,9 +1312,12 @@ int
196196
add_relay_agent_options(struct interface_info *ip, struct dhcp_packet *packet,
197197
unsigned length, struct in_addr giaddr) {
198198
int is_dhcp = 0, mms;
@@ -206,7 +206,7 @@ index 0cb2ef6..418b943 100644
206206

207207
/* If we're not adding agent options to packets, we can skip
208208
this. */
209-
@@ -1316,17 +1415,40 @@ add_relay_agent_options(struct interface_info *ip, struct dhcp_packet *packet,
209+
@@ -1357,17 +1456,40 @@ add_relay_agent_options(struct interface_info *ip, struct dhcp_packet *packet,
210210
op = sp;
211211
#endif
212212

@@ -258,7 +258,7 @@ index 0cb2ef6..418b943 100644
258258
}
259259

260260
if (adding_link_select) {
261-
@@ -1351,7 +1473,7 @@ add_relay_agent_options(struct interface_info *ip, struct dhcp_packet *packet,
261+
@@ -1392,7 +1514,7 @@ add_relay_agent_options(struct interface_info *ip, struct dhcp_packet *packet,
262262
* If not, forward without adding the option.
263263
*/
264264
if (max - sp >= optlen + 3) {
@@ -267,7 +267,7 @@ index 0cb2ef6..418b943 100644
267267

268268
/* Okay, cons up *our* Relay Agent Information option. */
269269
*sp++ = DHO_DHCP_AGENT_OPTIONS;
270-
@@ -1359,16 +1481,16 @@ add_relay_agent_options(struct interface_info *ip, struct dhcp_packet *packet,
270+
@@ -1400,16 +1522,16 @@ add_relay_agent_options(struct interface_info *ip, struct dhcp_packet *packet,
271271

272272
/* Copy in the circuit id... */
273273
*sp++ = RAI_CIRCUIT_ID;
@@ -292,5 +292,5 @@ index 0cb2ef6..418b943 100644
292292

293293
/* RFC3527: Use the inbound packet's interface address in
294294
--
295-
2.17.1
295+
2.25.1
296296

src/isc-dhcp/patch/0004-Support-for-loading-port-alias-map-file-to-replace-p.patch

+18-18
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ Subject: [PATCH] Support for loading port alias map file to replace port name
99
1 file changed, 104 insertions(+), 1 deletion(-)
1010

1111
diff --git a/relay/dhcrelay.c b/relay/dhcrelay.c
12-
index 00c81d3..54f132a 100644
12+
index 0d9b2e7..b72b1bc 100644
1313
--- a/relay/dhcrelay.c
1414
+++ b/relay/dhcrelay.c
15-
@@ -129,6 +129,14 @@ static void setup_streams(void);
15+
@@ -133,6 +133,14 @@ static void setup_streams(void);
1616
char *dhcrelay_sub_id = NULL;
1717
#endif
1818

@@ -24,21 +24,21 @@ index 00c81d3..54f132a 100644
2424
+static struct interface_name_alias_tuple *g_interface_name_alias_map = NULL;
2525
+static size_t g_interface_name_alias_map_size = 0;
2626
+
27+
#ifndef UNIT_TEST
2728
static void do_relay4(struct interface_info *, struct dhcp_packet *,
2829
unsigned int, unsigned int, struct iaddr,
29-
struct hardware *);
30-
@@ -143,6 +151,10 @@ static int strip_relay_agent_options(struct interface_info *,
31-
30+
@@ -152,6 +160,10 @@ extern int strip_relay_agent_options(struct interface_info *,
31+
#ifndef UNIT_TEST
3232
static void request_v4_interface(const char* name, int flags);
3333

3434
+static int load_interface_alias_map(const char *port_alias_map_file_path);
3535
+static int get_interface_alias_by_name(const char *if_name, char *if_alias_out);
3636
+static void free_interface_alias_map(void);
3737
+
3838
static const char copyright[] =
39-
"Copyright 2004-2018 Internet Systems Consortium.";
39+
"Copyright 2004-2022 Internet Systems Consortium.";
4040
static const char arr[] = "All rights reserved.";
41-
@@ -158,7 +170,7 @@ char *progname;
41+
@@ -167,7 +179,7 @@ char *progname;
4242
"\n" \
4343
" %%%% A single %%\n" \
4444
" %%h Hostname of device\n" \
@@ -47,23 +47,23 @@ index 00c81d3..54f132a 100644
4747
" %%P Hardware address of interface that generated the request\n" \
4848
" %%C Client hardware address\n" \
4949
" %%I DHCP relay agent IP Address\n" \
50-
@@ -171,6 +183,7 @@ char *progname;
50+
@@ -180,6 +192,7 @@ char *progname;
5151
" [-p <port> | -rp <relay-port>]\n" \
5252
" [-pf <pid-file>] [--no-pid]\n"\
5353
" [-m append|replace|forward|discard]\n" \
5454
+" [--name-alias-map-file <name-alias-map-file>]\n" \
5555
" [-i interface0 [ ... -i interfaceN]\n" \
5656
" [-iu interface0 [ ... -iu interfaceN]\n" \
5757
" [-id interface0 [ ... -id interfaceN]\n" \
58-
@@ -179,6 +192,7 @@ char *progname;
58+
@@ -188,6 +201,7 @@ char *progname;
5959
" %s -6 [-d] [-q] [-I] [-c <hops>]\n" \
6060
" [-p <port> | -rp <relay-port>]\n" \
6161
" [-pf <pid-file>] [--no-pid]\n" \
6262
+" [--name-alias-map-file <name-alias-map-file>]\n" \
6363
" [-s <subscriber-id>]\n" \
6464
" -l lower0 [ ... -l lowerN]\n" \
6565
" -u upper0 [ ... -u upperN]\n" \
66-
@@ -619,6 +633,11 @@ main(int argc, char **argv) {
66+
@@ -643,6 +657,11 @@ main(int argc, char **argv) {
6767
no_dhcrelay_pid = ISC_TRUE;
6868
} else if (!strcmp(argv[i], "--no-pid")) {
6969
no_pid_file = ISC_TRUE;
@@ -75,26 +75,27 @@ index 00c81d3..54f132a 100644
7575
} else if (argv[i][0] == '-') {
7676
usage("Unknown command: %s", argv[i]);
7777
} else {
78-
@@ -841,6 +860,7 @@ main(int argc, char **argv) {
78+
@@ -865,6 +884,7 @@ main(int argc, char **argv) {
7979
dispatch();
8080

8181
/* In fact dispatch() never returns. */
8282
+ free_interface_alias_map();
8383
return (0);
8484
}
8585

86-
@@ -1271,6 +1291,7 @@ format_relay_agent_rfc3046_msg(const struct interface_info *ip, struct dhcp_pack
86+
@@ -1307,6 +1327,7 @@ format_relay_agent_rfc3046_msg(const struct interface_info *ip, struct dhcp_pack
8787
*/
8888
if (packet->htype && !packet->giaddr.s_addr) {
8989
int ret = 0, vlanid = 0;
9090
+ char ifalias[IFNAMSIZ] = { 0 };
9191

9292
ret = _bridgefdbquery(print_hw_addr(packet->htype, packet->hlen, packet->chaddr),
9393
ifname,
94-
@@ -1287,6 +1308,18 @@ format_relay_agent_rfc3046_msg(const struct interface_info *ip, struct dhcp_pack
94+
@@ -1322,6 +1343,18 @@ format_relay_agent_rfc3046_msg(const struct interface_info *ip, struct dhcp_pack
95+
9596
strncpy(ifname, ip->name, IFNAMSIZ);
9697
}
97-
98+
+
9899
+ // Attempt to translate SONiC interface name to vendor alias
99100
+ ret = get_interface_alias_by_name(ifname, ifalias);
100101
+ if (ret < 0) {
@@ -106,11 +107,10 @@ index 00c81d3..54f132a 100644
106107
+
107108
+ strncpy(ifname, ifalias, IFNAMSIZ);
108109
+ }
109-
+
110+
110111
str = ifname;
111112
}
112-
break;
113-
@@ -2313,3 +2346,73 @@ void request_v4_interface(const char* name, int flags) {
113+
@@ -2361,3 +2394,73 @@ void request_v4_interface(const char* name, int flags) {
114114
interface_snorf(tmp, (INTERFACE_REQUESTED | flags));
115115
interface_dereference(&tmp, MDL);
116116
}
@@ -185,5 +185,5 @@ index 00c81d3..54f132a 100644
185185
+ g_interface_name_alias_map_size = 0;
186186
+}
187187
--
188-
2.17.1
188+
2.25.1
189189

src/isc-dhcp/patch/0005-Add-enable-use-sockets-to-configure-flags-in-debian-.patch

+6-6
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,18 @@ Subject: [PATCH 1/3] Add --enable-use-sockets to configure flags in
99
1 file changed, 1 insertion(+), 1 deletion(-)
1010

1111
diff --git a/debian/rules b/debian/rules
12-
index d3fcc1d..2a7219d 100755
12+
index dc2a9b1..3d12fb5 100755
1313
--- a/debian/rules
1414
+++ b/debian/rules
15-
@@ -24,7 +24,7 @@ CFLAGS+=-D_PATH_DHCLIENT_CONF='\"/etc/dhcp/dhclient.conf\"'
15+
@@ -23,7 +23,7 @@ CFLAGS+=-D_PATH_DHCLIENT_CONF='\"/etc/dhcp/dhclient.conf\"'
1616
CFLAGS+=-D_PATH_DHCLIENT_DB='\"$(LEASE_PATH)/dhclient.leases\"'
1717
CFLAGS+=-D_PATH_DHCLIENT6_DB='\"$(LEASE_PATH)/dhclient6.leases\"'
1818

19-
-CONFFLAGS=--prefix=/usr --with-libbind=/usr --enable-log-pid --enable-paranoia
20-
+CONFFLAGS=--prefix=/usr --with-libbind=/usr --enable-log-pid --enable-paranoia --enable-use-sockets
19+
-CONFFLAGS+=--prefix=/usr --enable-log-pid --enable-paranoia
20+
+CONFFLAGS+=--prefix=/usr --enable-log-pid --enable-paranoia --enable-use-sockets
2121

22+
include /usr/share/dpkg/buildtools.mk
2223
# cross-architecture building
23-
ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE))
2424
--
25-
2.17.1
25+
2.25.1
2626

src/isc-dhcp/patch/0006-Bugfix-Ensure-HAVE_SO_BINDTODEVICE-has-a-chance-to-b.patch

+9-5
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ Subject: [PATCH 2/3] Bugfix: Ensure HAVE_SO_BINDTODEVICE has a chance to be
99
1 file changed, 120 insertions(+), 119 deletions(-)
1010

1111
diff --git a/includes/osdep.h b/includes/osdep.h
12-
index cfae90b..f07c43c 100644
12+
index 0742858..dfccb8c 100644
1313
--- a/includes/osdep.h
1414
+++ b/includes/osdep.h
15-
@@ -48,37 +48,6 @@
15+
@@ -47,37 +47,6 @@
1616
#define BYTE_ORDER DHCP_BYTE_ORDER
1717
#endif /* BYTE_ORDER */
1818

@@ -50,7 +50,7 @@ index cfae90b..f07c43c 100644
5050
#if !defined (TIME_MAX)
5151
# define TIME_MAX 2147483647
5252
#endif
53-
@@ -91,94 +60,6 @@
53+
@@ -90,98 +59,10 @@
5454
# define vsnprintf isc_print_vsnprintf
5555
#endif
5656

@@ -102,6 +102,10 @@ index cfae90b..f07c43c 100644
102102
-# define USE_UPF_RECEIVE
103103
-#endif
104104
-
105+
#if defined (SO_BINDTODEVICE) && !defined (HAVE_SO_BINDTODEVICE)
106+
# define HAVE_SO_BINDTODEVICE
107+
#endif
108+
105109
-/* Porting::
106110
-
107111
- If you add support for sending packets directly out an interface,
@@ -145,7 +149,7 @@ index cfae90b..f07c43c 100644
145149
/* If we don't have a DLPI packet filter, we have to filter in userland.
146150
Probably not worth doing, actually. */
147151
#if defined (USE_DLPI_RECEIVE) && !defined (USE_DLPI_PFMOD)
148-
@@ -288,4 +169,124 @@
152+
@@ -287,4 +168,124 @@
149153
# define STDERR_FILENO 2
150154
#endif
151155

@@ -271,5 +275,5 @@ index cfae90b..f07c43c 100644
271275
+
272276
#endif /* __ISC_DHCP_OSDEP_H__ */
273277
--
274-
2.17.1
278+
2.25.1
275279

0 commit comments

Comments
 (0)