From af9b7156c8fd16c671ce9332613faaf864b075b3 Mon Sep 17 00:00:00 2001 From: qinyang Date: Tue, 27 Jun 2023 01:11:53 -0700 Subject: vcl: ldp support SO_ORIGINAL_DST Type: improvement Support SO_ORIGINAL_DST socket option to get original dst_ip4 and dst_port if nat44 rule enabled. Change-Id: If00e00d03e48f3b78a23a68f1b078954d79dd0f7 Signed-off-by: qinyang --- src/vcl/ldp.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/vcl/ldp.c') diff --git a/src/vcl/ldp.c b/src/vcl/ldp.c index 2256a2b9061..a8062b4ca8d 100644 --- a/src/vcl/ldp.c +++ b/src/vcl/ldp.c @@ -67,6 +67,10 @@ #define UDP_SEGMENT 103 #endif +#ifndef SO_ORIGINAL_DST +/* from */ +#define SO_ORIGINAL_DST 80 +#endif typedef struct ldp_worker_ctx_ { u8 *io_buffer; @@ -2043,6 +2047,21 @@ getsockopt (int fd, int level, int optname, break; } break; + case SOL_IP: + switch (optname) + { + case SO_ORIGINAL_DST: + rv = + vls_attr (vlsh, VPPCOM_ATTR_GET_ORIGINAL_DST, optval, optlen); + break; + default: + LDBG (0, + "ERROR: fd %d: getsockopt SOL_IP: vlsh %u " + "optname %d unsupported!", + fd, vlsh, optname); + break; + } + break; case SOL_IPV6: switch (optname) { -- cgit 1.2.3-korg