1 #ifndef NM_NETWORK_H_
2 #define NM_NETWORK_H_
3 
4 #include <nm_string.h>
5 #include <nm_vector.h>
6 
7 #include <arpa/inet.h>
8 
9 #if defined (NM_OS_FREEBSD)
10 #include <sys/socket.h>
11 #include <netinet/in.h>
12 #endif
13 
14 typedef struct {
15     struct in_addr addr;
16     uint32_t cidr;
17 } nm_net_addr_t;
18 
19 #define NM_INIT_NETADDR (nm_net_addr_t) { {0}, 0 }
20 
21 int nm_net_iface_exists(const nm_str_t *name);
22 uint32_t nm_net_iface_idx(const nm_str_t *name);
23 #if defined (NM_OS_LINUX)
24 void nm_net_add_macvtap(const nm_str_t *name, const nm_str_t *parent,
25                         const nm_str_t *maddr, int type);
26 void nm_net_del_iface(const nm_str_t *name);
27 void nm_net_add_veth(const nm_str_t *l_name, const nm_str_t *r_name);
28 void nm_net_link_up(const nm_str_t *name);
29 void nm_net_link_down(const nm_str_t *name);
30 int nm_net_link_status(const nm_str_t *name);
31 #endif
32 void nm_net_add_tap(const nm_str_t *name);
33 void nm_net_del_tap(const nm_str_t *name);
34 void nm_net_set_ipaddr(const nm_str_t *name, const nm_str_t *addr);
35 void nm_net_set_altname(const nm_str_t *name, const nm_str_t *altname);
36 int nm_net_fix_tap_name(nm_str_t *name, const nm_str_t *maddr);
37 void nm_net_mac_n2s(uint64_t maddr, nm_str_t *res);
38 uint64_t nm_net_mac_s2n(const nm_str_t *addr);
39 int nm_net_verify_mac(const nm_str_t *mac);
40 int nm_net_verify_ipaddr4(const nm_str_t *src, nm_net_addr_t *net,
41                           nm_str_t *err);
42 int nm_net_check_port(const uint16_t port, const int type, const uint32_t inaddr);
43 
44 #endif /*NM_NETWORK_H_ */
45 /* vim:set ts=4 sw=4: */
46