aboutgitcodebugslistschat
path: root/util.h
diff options
context:
space:
mode:
Diffstat (limited to 'util.h')
-rw-r--r--util.h25
1 files changed, 23 insertions, 2 deletions
diff --git a/util.h b/util.h
index 3e24c9a..c4d947a 100644
--- a/util.h
+++ b/util.h
@@ -29,24 +29,45 @@ void debug(const char *format, ...);
#define MAX(x, y) (((x) > (y)) ? (x) : (y))
#endif
+#define SWAP(a, b) \
+ do { \
+ typeof(a) __x = (a); (a) = (b); (b) = __x; \
+ } while (0) \
+
#define STRINGIFY(x) #x
#define STR(x) STRINGIFY(x)
+#define V4 0
+#define V6 1
+#define IP_VERSIONS 2
+
#define ARRAY_SIZE(a) ((int)(sizeof(a) / sizeof((a)[0])))
#define IN_INTERVAL(a, b, x) ((x) >= (a) && (x) <= (b))
#define FD_PROTO(x, proto) \
(IN_INTERVAL(c->proto.fd_min, c->proto.fd_max, (x)))
-#define PORT_IS_EPHEMERAL(port) ((port) >= (1 << 15) + (1 << 14)) /* RFC 6335 */
+#define PORT_EPHEMERAL_MIN ((1 << 15) + (1 << 14)) /* RFC 6335 */
+#define PORT_IS_EPHEMERAL(port) ((port) >= PORT_EPHEMERAL_MIN)
+
+#define NS_FN_STACK_SIZE (RLIMIT_STACK_VAL * 1024 / 4)
#include <linux/ipv6.h>
#include <net/if.h>
#include <linux/ip.h>
+#include <limits.h>
+
+struct ctx;
uint16_t csum_fold(uint32_t sum);
uint16_t csum_ip4(void *buf, size_t len);
void csum_tcp4(struct iphdr *iph);
char *ipv6_l4hdr(struct ipv6hdr *ip6h, uint8_t *proto);
-int sock_l4(struct ctx *c, int af, uint16_t proto, uint16_t port);
+int sock_l4(struct ctx *c, int af, uint8_t proto, uint16_t port, int lo,
+ uint32_t data);
int timespec_diff_ms(struct timespec *a, struct timespec *b);
+void bitmap_set(uint8_t *map, int bit);
+void bitmap_clear(uint8_t *map, int bit);
+int bitmap_isset(uint8_t *map, int bit);
+void procfs_scan_listen(char *name, uint8_t *map);
+int ns_enter(int target_pid);