diff options
author | Hans Dedecker <dedeckeh@gmail.com> | 2017-02-01 10:44:51 +0100 |
---|---|---|
committer | Hans Dedecker <dedeckeh@gmail.com> | 2017-02-09 15:00:50 +0100 |
commit | 8a615ad3c4f2318667630e2505888df09901320d (patch) | |
tree | 9e80bd99135b1919a263adc5ce79d645f9bbd3af /src/odhcpd.h | |
parent | 0129f7926b9a0f993058dca9775e64021527eb32 (diff) |
npd: rework IPv6 relay logic (FS#396)
Rework the IPv6 relay logic to make it more robust by making
use of libnltiny to process netlink messages.
At the same time reimplement the IPv6 relay finite state machine
to make the relay logic less error prone
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
Diffstat (limited to 'src/odhcpd.h')
-rw-r--r-- | src/odhcpd.h | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/odhcpd.h b/src/odhcpd.h index a2ef9f7..fb6b182 100644 --- a/src/odhcpd.h +++ b/src/odhcpd.h @@ -67,6 +67,7 @@ struct odhcpd_event { void (*handle_dgram)(void *addr, void *data, size_t len, struct interface *iface, void *dest_addr); void (*handle_error)(int error); + void (*recv_msgs)(struct odhcpd_event *ev); }; @@ -186,11 +187,10 @@ extern struct list_head interfaces; // Exported main functions -struct nl_sock *odhcpd_open_rtnl(int protocol, int groups); int odhcpd_register(struct odhcpd_event *event); void odhcpd_process(struct odhcpd_event *event); -struct nl_sock *odhcpd_create_nl_socket(int protocol, int groups); +struct nl_sock *odhcpd_create_nl_socket(int protocol); ssize_t odhcpd_send(int socket, struct sockaddr_in6 *dest, struct iovec *iov, size_t iov_len, const struct interface *iface); @@ -203,9 +203,11 @@ int odhcpd_get_mac(const struct interface *iface, uint8_t mac[6]); struct interface* odhcpd_get_interface_by_index(int ifindex); struct interface* odhcpd_get_master_interface(void); int odhcpd_urandom(void *data, size_t len); -int odhcpd_setup_route(const struct in6_addr *addr, int prefixlen, +int odhcpd_setup_route(const struct in6_addr *addr, const int prefixlen, const struct interface *iface, const struct in6_addr *gw, - uint32_t metric, bool add); + const uint32_t metric, const bool add); +int odhcpd_setup_proxy_neigh(const struct in6_addr *addr, + const struct interface *iface, const bool add); void odhcpd_run(void); time_t odhcpd_time(void); |