aboutgitcodebugslistschat
path: root/util.c
diff options
context:
space:
mode:
authorStefano Brivio <sbrivio@redhat.com>2021-09-27 05:24:30 +0200
committerStefano Brivio <sbrivio@redhat.com>2021-09-27 11:23:44 +0200
commit9657b6ed05cc67273f6bab1751ae98ca4e89f114 (patch)
tree556c1dc6e035322d1c9525703863175b9e86d542 /util.c
parente69e13671dcbf3b6964e7bd9d485f267c5fa03cb (diff)
downloadpasst-9657b6ed05cc67273f6bab1751ae98ca4e89f114.tar
passt-9657b6ed05cc67273f6bab1751ae98ca4e89f114.tar.gz
passt-9657b6ed05cc67273f6bab1751ae98ca4e89f114.tar.bz2
passt-9657b6ed05cc67273f6bab1751ae98ca4e89f114.tar.lz
passt-9657b6ed05cc67273f6bab1751ae98ca4e89f114.tar.xz
passt-9657b6ed05cc67273f6bab1751ae98ca4e89f114.tar.zst
passt-9657b6ed05cc67273f6bab1751ae98ca4e89f114.zip
conf, tcp: Periodic detection of bound ports for pasta port forwarding
Detecting bound ports at start-up time isn't terribly useful: do this periodically instead, if configured. This is only implemented for TCP at the moment, UDP is somewhat more complicated: leave a TODO there. Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'util.c')
-rw-r--r--util.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/util.c b/util.c
index 285c0b6..3cf3a82 100644
--- a/util.c
+++ b/util.c
@@ -266,8 +266,9 @@ int bitmap_isset(uint8_t *map, int bit)
* procfs_scan_listen() - Set bits for listening TCP or UDP sockets from procfs
* @name: Corresponding name of file under /proc/net/
* @map: Bitmap where numbers of ports in listening state will be set
+ * @exclude: Bitmap of ports to exclude from setting (and clear)
*/
-void procfs_scan_listen(char *name, uint8_t *map)
+void procfs_scan_listen(char *name, uint8_t *map, uint8_t *exclude)
{
char line[200], path[PATH_MAX];
unsigned long port;
@@ -288,7 +289,10 @@ void procfs_scan_listen(char *name, uint8_t *map)
(strstr(name, "udp") && state != 0x07))
continue;
- bitmap_set(map, port);
+ if (bitmap_isset(exclude, port))
+ bitmap_clear(map, port);
+ else
+ bitmap_set(map, port);
}
fclose(fp);