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