interface-ip.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #ifndef __INTERFACE_IP_H
  2. #define __INTERFACE_IP_H
  3. #include "interface.h"
  4. enum device_addr_flags {
  5. /* address family for routes and addresses */
  6. DEVADDR_INET4 = (0 << 0),
  7. DEVADDR_INET6 = (1 << 0),
  8. DEVADDR_FAMILY = DEVADDR_INET4 | DEVADDR_INET6,
  9. /* externally added address */
  10. DEVADDR_EXTERNAL = (1 << 2),
  11. };
  12. union if_addr {
  13. struct in_addr in;
  14. struct in6_addr in6;
  15. };
  16. struct device_addr {
  17. struct vlist_node node;
  18. enum device_addr_flags flags;
  19. bool enabled;
  20. /* ipv4 only */
  21. uint32_t broadcast;
  22. /* must be last */
  23. unsigned int mask;
  24. union if_addr addr;
  25. };
  26. struct device_route {
  27. struct vlist_node node;
  28. enum device_addr_flags flags;
  29. bool enabled;
  30. bool keep;
  31. union if_addr nexthop;
  32. int metric;
  33. int mtu;
  34. /* must be last */
  35. unsigned int mask;
  36. union if_addr addr;
  37. };
  38. struct dns_server {
  39. struct vlist_simple_node node;
  40. int af;
  41. union if_addr addr;
  42. };
  43. struct dns_search_domain {
  44. struct vlist_simple_node node;
  45. char name[];
  46. };
  47. extern const struct config_param_list route_attr_list;
  48. void interface_ip_init(struct interface_ip_settings *ip, struct interface *iface);
  49. void interface_add_dns_server(struct interface_ip_settings *ip, const char *str);
  50. void interface_add_dns_server_list(struct interface_ip_settings *ip, struct blob_attr *list);
  51. void interface_add_dns_search_list(struct interface_ip_settings *ip, struct blob_attr *list);
  52. void interface_write_resolv_conf(void);
  53. void interface_ip_add_route(struct interface *iface, struct blob_attr *attr, bool v6);
  54. void interface_ip_update_start(struct interface_ip_settings *ip);
  55. void interface_ip_update_complete(struct interface_ip_settings *ip);
  56. void interface_ip_flush(struct interface_ip_settings *ip);
  57. void interface_ip_set_enabled(struct interface_ip_settings *ip, bool enabled);
  58. #endif