X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fsubnet.h;h=cfdf2d0b7bd6d13fb9bb174e7b108bf65947e1d8;hb=refs%2Fheads%2F1.1;hp=5bd5ff0009171f95d8d41f43141a91eaa1fe6279;hpb=5822f817aa802c2c5a83e9d99a8ae78cb822799b;p=tinc diff --git a/src/subnet.h b/src/subnet.h index 5bd5ff00..6220e580 100644 --- a/src/subnet.h +++ b/src/subnet.h @@ -3,7 +3,7 @@ /* subnet.h -- header for subnet.c - Copyright (C) 2000-2012 Guus Sliepen , + Copyright (C) 2000-2021 Guus Sliepen , 2000-2005 Ivo Timmermans This program is free software; you can redistribute it and/or modify @@ -27,8 +27,7 @@ typedef enum subnet_type_t { SUBNET_MAC = 0, SUBNET_IPV4, - SUBNET_IPV6, - SUBNET_TYPES /* Guardian */ + SUBNET_IPV6 } subnet_type_t; typedef struct subnet_mac_t { @@ -36,13 +35,13 @@ typedef struct subnet_mac_t { } subnet_mac_t; typedef struct subnet_ipv4_t { - ipv4_t address; int prefixlength; + ipv4_t address; } subnet_ipv4_t; typedef struct subnet_ipv6_t { - ipv6_t address; int prefixlength; + ipv6_t address; } subnet_ipv6_t; typedef struct subnet_t { @@ -63,29 +62,30 @@ typedef struct subnet_t { #define MAXNETSTR 64 -extern splay_tree_t *subnet_tree; +extern splay_tree_t subnet_tree; -extern int subnet_compare(const struct subnet_t *, const struct subnet_t *); -extern subnet_t *new_subnet(void) __attribute__ ((__malloc__)); -extern void free_subnet(subnet_t *); +extern int subnet_compare(const struct subnet_t *a, const struct subnet_t *b); +extern void free_subnet(subnet_t *subnet); +extern subnet_t *new_subnet(void) ATTR_MALLOC ATTR_DEALLOCATOR(free_subnet); extern void init_subnets(void); extern void exit_subnets(void); -extern splay_tree_t *new_subnet_tree(void) __attribute__ ((__malloc__)); -extern void free_subnet_tree(splay_tree_t *); -extern void subnet_add(struct node_t *, subnet_t *); -extern void subnet_del(struct node_t *, subnet_t *); -extern void subnet_update(struct node_t *, subnet_t *, bool); -extern int maskcmp(const void *, const void *, int); -extern void maskcpy(void *, const void *, int, int); -extern void mask(void *, int, int); -extern bool maskcheck(const void *, int, int); -extern bool net2str(char *, int, const subnet_t *); -extern bool str2net(subnet_t *, const char *); -extern subnet_t *lookup_subnet(const struct node_t *, const subnet_t *); -extern subnet_t *lookup_subnet_mac(const struct node_t *, const mac_t *); -extern subnet_t *lookup_subnet_ipv4(const ipv4_t *); -extern subnet_t *lookup_subnet_ipv6(const ipv6_t *); -extern bool dump_subnets(struct connection_t *); -extern void subnet_cache_flush(void); +extern void init_subnet_tree(splay_tree_t *tree); +extern void subnet_add(struct node_t *owner, subnet_t *subnet); +extern void subnet_del(struct node_t *owner, subnet_t *subnet); +extern void subnet_update(struct node_t *owner, subnet_t *subnet, bool up); +extern int maskcmp(const void *a, const void *b, size_t masklen); +extern void maskcpy(void *dest, const void *src, size_t masklen, size_t len); +extern void mask(void *mask, size_t masklen, size_t len); +extern bool subnetcheck(const subnet_t subnet); +extern bool maskcheck(const void *mask, size_t masklen, size_t len); +extern bool net2str(char *netstr, size_t len, const subnet_t *subnet); +extern bool str2net(subnet_t *subnet, const char *netstr); +extern subnet_t *lookup_subnet(struct node_t *owner, const subnet_t *subnet); +extern subnet_t *lookup_subnet_mac(const struct node_t *owner, const mac_t *address); +extern subnet_t *lookup_subnet_ipv4(const ipv4_t *address); +extern subnet_t *lookup_subnet_ipv6(const ipv6_t *address); +extern bool dump_subnets(struct connection_t *c); +extern void subnet_cache_flush_tables(void); +extern void subnet_cache_flush_table(subnet_type_t ipver); #endif