summaryrefslogtreecommitdiff
path: root/bgpd/bgp_network.c
diff options
context:
space:
mode:
authorPavel Shirshov <pavelsh@microsoft.com>2022-05-05 14:16:27 -0400
committerDonald Sharp <sharpd@pinkbelly.org>2022-05-13 14:14:35 -0400
commit425bd64be847f1f8dd3c4c24b5a6d8f2fe05fb30 (patch)
treedb71ae18cda7dee3b4f0f8628c783464976c2f96 /bgpd/bgp_network.c
parent64b43136b9c82c5618b9f7282d01c287173ebf01 (diff)
bgpd: Allow bgp to control the DSCP session TOS value
Allow BGP to control the TOS DSCP value in the tcp header via a new command at the bgp global level `bgp session-dscp <0-63>` Signed-off-by: Donald Sharp <sharpd@nvidia.com> Signed-off-by: Pavel Shirhov <pavelsh@microsoft.com>
Diffstat (limited to 'bgpd/bgp_network.c')
-rw-r--r--bgpd/bgp_network.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/bgpd/bgp_network.c b/bgpd/bgp_network.c
index e702ee4fdd..77e2a0f53f 100644
--- a/bgpd/bgp_network.c
+++ b/bgpd/bgp_network.c
@@ -741,11 +741,9 @@ int bgp_connect(struct peer *peer)
#ifdef IPTOS_PREC_INTERNETCONTROL
frr_with_privs(&bgpd_privs) {
if (sockunion_family(&peer->su) == AF_INET)
- setsockopt_ipv4_tos(peer->fd,
- IPTOS_PREC_INTERNETCONTROL);
+ setsockopt_ipv4_tos(peer->fd, bm->tcp_dscp);
else if (sockunion_family(&peer->su) == AF_INET6)
- setsockopt_ipv6_tclass(peer->fd,
- IPTOS_PREC_INTERNETCONTROL);
+ setsockopt_ipv6_tclass(peer->fd, bm->tcp_dscp);
}
#endif
@@ -822,10 +820,9 @@ static int bgp_listener(int sock, struct sockaddr *sa, socklen_t salen,
#ifdef IPTOS_PREC_INTERNETCONTROL
if (sa->sa_family == AF_INET)
- setsockopt_ipv4_tos(sock, IPTOS_PREC_INTERNETCONTROL);
+ setsockopt_ipv4_tos(sock, bm->tcp_dscp);
else if (sa->sa_family == AF_INET6)
- setsockopt_ipv6_tclass(sock,
- IPTOS_PREC_INTERNETCONTROL);
+ setsockopt_ipv6_tclass(sock, bm->tcp_dscp);
#endif
sockopt_v6only(sa->sa_family, sock);