diff options
author | Stefano Brivio <sbrivio@redhat.com> | 2021-09-27 05:24:30 +0200 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2021-09-27 11:23:44 +0200 |
commit | 9657b6ed05cc67273f6bab1751ae98ca4e89f114 (patch) | |
tree | 556c1dc6e035322d1c9525703863175b9e86d542 /util.c | |
parent | e69e13671dcbf3b6964e7bd9d485f267c5fa03cb (diff) | |
download | passt-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.c | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -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); |