summary refs log tree commit diff
path: root/shared/n-acd/src/n-acd-private.h
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2021-10-01 23:05:04 +0200
committerMichael Biebl <biebl@debian.org>2021-10-01 23:05:04 +0200
commite74c568b07b50b97873fb4ee1d776dedefbd54d6 (patch)
tree3469f17ea9af91f7ff169b890633bda68b0cf76e /shared/n-acd/src/n-acd-private.h
parentbfe522304da217296e2a61040f58e35ec5d6f3f2 (diff)
New upstream version 1.32.12 upstream/1.32.12
Diffstat (limited to 'shared/n-acd/src/n-acd-private.h')
-rw-r--r--shared/n-acd/src/n-acd-private.h154
1 files changed, 0 insertions, 154 deletions
diff --git a/shared/n-acd/src/n-acd-private.h b/shared/n-acd/src/n-acd-private.h
deleted file mode 100644
index 4583c018..00000000
--- a/shared/n-acd/src/n-acd-private.h
+++ /dev/null
@@ -1,154 +0,0 @@
-#pragma once
-
-#include <c-list.h>
-#include <c-rbtree.h>
-#include <c-stdaux.h>
-#include <errno.h>
-#include <inttypes.h>
-#include <netinet/if_ether.h>
-#include <netinet/in.h>
-#include <stdbool.h>
-#include <stdlib.h>
-#include "util/timer.h"
-#include "n-acd.h"
-
-typedef struct NAcdEventNode NAcdEventNode;
-
-/* This augments the error-codes with internal ones that are never exposed. */
-enum {
-        _N_ACD_INTERNAL = _N_ACD_E_N,
-
-        N_ACD_E_DROPPED,
-};
-
-enum {
-        N_ACD_PROBE_STATE_PROBING,
-        N_ACD_PROBE_STATE_CONFIGURING,
-        N_ACD_PROBE_STATE_ANNOUNCING,
-        N_ACD_PROBE_STATE_FAILED,
-};
-
-struct NAcdConfig {
-        int ifindex;
-        unsigned int transport;
-        uint8_t mac[ETH_ALEN];
-        size_t n_mac;
-};
-
-#define N_ACD_CONFIG_NULL(_x) {                                                 \
-                .transport = _N_ACD_TRANSPORT_N,                                \
-        }
-
-struct NAcdProbeConfig {
-        struct in_addr ip;
-        uint64_t timeout_msecs;
-};
-
-#define N_ACD_PROBE_CONFIG_NULL(_x) {                                           \
-                .timeout_msecs = N_ACD_TIMEOUT_RFC5227,                         \
-        }
-
-struct NAcdEventNode {
-        CList acd_link;
-        CList probe_link;
-        NAcdEvent event;
-        uint8_t sender[ETH_ALEN];
-        bool is_public : 1;
-};
-
-#define N_ACD_EVENT_NODE_NULL(_x) {                                             \
-                .acd_link = C_LIST_INIT((_x).acd_link),                         \
-                .probe_link = C_LIST_INIT((_x).probe_link),                     \
-        }
-
-struct NAcd {
-        unsigned long n_refs;
-        unsigned int seed;
-        int fd_epoll;
-        int fd_socket;
-        CRBTree ip_tree;
-        CList event_list;
-        Timer timer;
-
-        /* BPF map */
-        int fd_bpf_map;
-        size_t n_bpf_map;
-        size_t max_bpf_map;
-
-        /* configuration */
-        int ifindex;
-        uint8_t mac[ETH_ALEN];
-
-        /* flags */
-        bool preempted : 1;
-};
-
-#define N_ACD_NULL(_x) {                                                        \
-                .n_refs = 1,                                                    \
-                .fd_epoll = -1,                                                 \
-                .fd_socket = -1,                                                \
-                .ip_tree = C_RBTREE_INIT,                                       \
-                .event_list = C_LIST_INIT((_x).event_list),                     \
-                .timer = TIMER_NULL((_x).timer),                                \
-                .fd_bpf_map = -1,                                               \
-        }
-
-struct NAcdProbe {
-        NAcd *acd;
-        CRBNode ip_node;
-        CList event_list;
-        Timeout timeout;
-
-        /* configuration */
-        struct in_addr ip;
-        uint64_t timeout_multiplier;
-        void *userdata;
-
-        /* state */
-        unsigned int state;
-        unsigned int n_iteration;
-        unsigned int defend;
-        uint64_t last_defend;
-};
-
-#define N_ACD_PROBE_NULL(_x) {                                                  \
-                .ip_node = C_RBNODE_INIT((_x).ip_node),                         \
-                .event_list = C_LIST_INIT((_x).event_list),                     \
-                .timeout = TIMEOUT_INIT((_x).timeout),                          \
-                .state = N_ACD_PROBE_STATE_PROBING,                             \
-                .defend = N_ACD_DEFEND_NEVER,                                   \
-        }
-
-/* events */
-
-int n_acd_event_node_new(NAcdEventNode **nodep);
-NAcdEventNode *n_acd_event_node_free(NAcdEventNode *node);
-
-/* contexts */
-
-void n_acd_remember(NAcd *acd, uint64_t now, bool success);
-int n_acd_raise(NAcd *acd, NAcdEventNode **nodep, unsigned int event);
-int n_acd_send(NAcd *acd, const struct in_addr *tpa, const struct in_addr *spa);
-int n_acd_ensure_bpf_map_space(NAcd *acd);
-
-/* probes */
-
-int n_acd_probe_new(NAcdProbe **probep, NAcd *acd, NAcdProbeConfig *config);
-int n_acd_probe_raise(NAcdProbe *probe, NAcdEventNode **nodep, unsigned int event);
-int n_acd_probe_handle_timeout(NAcdProbe *probe);
-int n_acd_probe_handle_packet(NAcdProbe *probe, struct ether_arp *packet, bool hard_conflict);
-
-/* eBPF */
-
-int n_acd_bpf_map_create(int *mapfdp, size_t max_elements);
-int n_acd_bpf_map_add(int mapfd, struct in_addr *addr);
-int n_acd_bpf_map_remove(int mapfd, struct in_addr *addr);
-
-int n_acd_bpf_compile(int *progfdp, int mapfd, struct ether_addr *mac);
-
-/* inline helpers */
-
-static inline void n_acd_event_node_freep(NAcdEventNode **node) {
-        if (*node)
-                n_acd_event_node_free(*node);
-}