projects
/
project
/
odhcpd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Initial rewrite of NDP proxy
[project/odhcpd.git]
/
src
/
odhcpd.h
diff --git
a/src/odhcpd.h
b/src/odhcpd.h
index
531a0ff
..
1fe775e
100644
(file)
--- a/
src/odhcpd.h
+++ b/
src/odhcpd.h
@@
-61,13
+61,16
@@
extern struct list_head leases;
struct odhcpd_event {
struct uloop_fd uloop;
void (*handle_dgram)(void *addr, void *data, size_t len,
struct odhcpd_event {
struct uloop_fd uloop;
void (*handle_dgram)(void *addr, void *data, size_t len,
- struct interface *iface);
+ struct interface *iface
, void *dest_addr
);
};
struct odhcpd_ipaddr {
struct in6_addr addr;
uint8_t prefix;
};
struct odhcpd_ipaddr {
struct in6_addr addr;
uint8_t prefix;
+ uint8_t dprefix;
+ bool has_class;
+ uint16_t class;
uint32_t preferred;
uint32_t valid;
};
uint32_t preferred;
uint32_t valid;
};
@@
-104,7
+107,6
@@
struct interface {
int ifindex;
char ifname[IF_NAMESIZE];
char name[IF_NAMESIZE];
int ifindex;
char ifname[IF_NAMESIZE];
char name[IF_NAMESIZE];
- bool inuse;
// Runtime data
struct uloop_timeout timer_rs;
// Runtime data
struct uloop_timeout timer_rs;
@@
-114,9
+116,15
@@
struct interface {
bool ia_reconf;
// DHCPv4
bool ia_reconf;
// DHCPv4
+ struct odhcpd_event dhcpv6_event;
struct odhcpd_event dhcpv4_event;
struct odhcpd_event dhcpv4_event;
+ struct odhcpd_event ndp_event;
struct list_head dhcpv4_assignments;
struct list_head dhcpv4_assignments;
+ // Managed PD
+ char dhcpv6_pd_manager[128];
+ struct in6_addr dhcpv6_pd_cer;
+
// Services
enum odhcpd_mode ra;
enum odhcpd_mode dhcpv6;
// Services
enum odhcpd_mode ra;
enum odhcpd_mode dhcpv6;
@@
-124,11
+132,11
@@
struct interface {
enum odhcpd_mode dhcpv4;
// Config
enum odhcpd_mode dhcpv4;
// Config
+ bool inuse;
bool external;
bool master;
bool ignore;
bool always_rewrite_dns;
bool external;
bool master;
bool ignore;
bool always_rewrite_dns;
- bool deprecate_ula_if_public_avail;
bool ra_not_onlink;
bool no_dynamic_dhcp;
bool ra_not_onlink;
bool no_dynamic_dhcp;
@@
-150,11
+158,13
@@
struct interface {
uint8_t *search;
size_t search_len;
uint8_t *search;
size_t search_len;
-
char* static_ndp
;
- size_t
static_ndp
_len;
+
void *dhcpv6_raw
;
+ size_t
dhcpv6_raw
_len;
char *upstream;
size_t upstream_len;
char *upstream;
size_t upstream_len;
+
+ char *filter_class;
};
extern struct list_head interfaces;
};
extern struct list_head interfaces;
@@
-186,13
+196,17
@@
time_t odhcpd_time(void);
ssize_t odhcpd_unhexlify(uint8_t *dst, size_t len, const char *src);
void odhcpd_hexlify(char *dst, const uint8_t *src, size_t len);
ssize_t odhcpd_unhexlify(uint8_t *dst, size_t len, const char *src);
void odhcpd_hexlify(char *dst, const uint8_t *src, size_t len);
-int config_parse_interface(struct blob_attr *b, const char *iname, bool overwrite);
+int odhcpd_bmemcmp(const void *av, const void *bv, size_t bits);
+void odhcpd_bmemcpy(void *av, const void *bv, size_t bits);
+
+int config_parse_interface(void *data, size_t len, const char *iname, bool overwrite);
#ifdef WITH_UBUS
int init_ubus(void);
const char* ubus_get_ifname(const char *name);
void ubus_apply_network(void);
bool ubus_has_prefix(const char *name, const char *ifname);
#ifdef WITH_UBUS
int init_ubus(void);
const char* ubus_get_ifname(const char *name);
void ubus_apply_network(void);
bool ubus_has_prefix(const char *name, const char *ifname);
+bool ubus_get_class(const char *ifname, const struct in6_addr *addr, uint16_t *pclass);
#endif
#endif
@@
-206,3
+220,5
@@
int setup_router_interface(struct interface *iface, bool enable);
int setup_dhcpv6_interface(struct interface *iface, bool enable);
int setup_ndp_interface(struct interface *iface, bool enable);
int setup_dhcpv4_interface(struct interface *iface, bool enable);
int setup_dhcpv6_interface(struct interface *iface, bool enable);
int setup_ndp_interface(struct interface *iface, bool enable);
int setup_dhcpv4_interface(struct interface *iface, bool enable);
+
+void odhcpd_reload(void);