1 #ifndef __IFUTILS_H__ 2 #define __IFUTILS_H__ 3 4 typedef union { 5 in_addr_t ip; 6 struct in6_addr ip6; 7 } addr_t; 8 9 #define MAX_IP_NUM 32 10 struct addrinfo_t 11 { 12 int iface; 13 int num; 14 struct 15 { 16 int prefix; 17 addr_t address; 18 } addrs[MAX_IP_NUM]; 19 }; 20 21 const char *ipaddr_to_string_v4(in_addr_t ipaddr); 22 const char *ipaddr_to_string_v6(uint8_t *ipaddr); 23 int mask_to_prefix_v4(in_addr_t mask); 24 25 int if_get_hwaddr(const char *name, void *ptr); 26 27 int if_link_down(const char *ifname); 28 int if_link_up(const char *ifname); 29 int if_set_mtu(const char *ifname, uint32_t mtu); 30 31 int if_set_addr_v4(const char *name, in_addr_t address, uint32_t prefixlen); 32 int if_del_addr_v4(const char *name, in_addr_t address, uint32_t prefixlen); 33 int if_set_addr_v6(const char *name, uint8_t *address, uint32_t prefixlen); 34 int if_del_addr_v6(const char *name, uint8_t *address, uint32_t prefixlen); 35 int if_flush_v4_addr(const char *ifname); 36 int if_flush_v6_addr(const char *ifname); 37 38 int if_set_route_gw_v4(const char *ifname, in_addr_t gwaddr); 39 int if_del_route_gw_v4(const char *ifname, in_addr_t gwaddr); 40 int if_set_default_route_v4(const char *ifname); 41 int if_del_default_route_v4(const char *ifname); 42 43 int if_set_route_gw_v6(const char *ifname, uint8_t *gwaddr); 44 int if_del_route_gw_v6(const char *ifname, uint8_t *gwaddr); 45 int if_set_default_route_v6(const char *ifname); 46 int if_del_default_route_v6(const char *ifname); 47 48 int if_set_network_v4(const char *ifname, in_addr_t ipaddr, uint32_t prefix, 49 in_addr_t gwaddr, in_addr_t dns1, in_addr_t dns2); 50 int if_set_network_v6(const char *ifname, uint8_t *ipaddr, uint32_t prefix, 51 uint8_t *gwaddr, uint8_t *dns1, uint8_t *dns2); 52 53 #endif //__IFUTILS_H__