net_rt_iflist.lc 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. /* include net_rt_iflist */
  2. #include "unproute.h"## 1 ##src/libroute/net_rt_iflist.c##
  3. char *## 2 ##src/libroute/net_rt_iflist.c##
  4. net_rt_iflist(int family, int flags, size_t *lenp)## 3 ##src/libroute/net_rt_iflist.c##
  5. {## 4 ##src/libroute/net_rt_iflist.c##
  6. int mib[6];## 5 ##src/libroute/net_rt_iflist.c##
  7. char *buf;## 6 ##src/libroute/net_rt_iflist.c##
  8. mib[0] = CTL_NET;## 7 ##src/libroute/net_rt_iflist.c##
  9. mib[1] = AF_ROUTE;## 8 ##src/libroute/net_rt_iflist.c##
  10. mib[2] = 0;## 9 ##src/libroute/net_rt_iflist.c##
  11. mib[3] = family; /* only addresses of this family */## 10 ##src/libroute/net_rt_iflist.c##
  12. mib[4] = NET_RT_IFLIST;## 11 ##src/libroute/net_rt_iflist.c##
  13. mib[5] = flags; /* interface index, or 0 */## 12 ##src/libroute/net_rt_iflist.c##
  14. if (sysctl(mib, 6, NULL, lenp, NULL, 0) < 0)## 13 ##src/libroute/net_rt_iflist.c##
  15. return (NULL);## 14 ##src/libroute/net_rt_iflist.c##
  16. if ((buf = malloc(*lenp)) == NULL)## 15 ##src/libroute/net_rt_iflist.c##
  17. return (NULL);## 16 ##src/libroute/net_rt_iflist.c##
  18. if (sysctl(mib, 6, buf, lenp, NULL, 0) < 0) {## 17 ##src/libroute/net_rt_iflist.c##
  19. free(buf);## 18 ##src/libroute/net_rt_iflist.c##
  20. return (NULL);## 19 ##src/libroute/net_rt_iflist.c##
  21. }## 20 ##src/libroute/net_rt_iflist.c##
  22. return (buf);## 21 ##src/libroute/net_rt_iflist.c##
  23. }## 22 ##src/libroute/net_rt_iflist.c##
  24. /* end net_rt_iflist */
  25. char *## 23 ##src/libroute/net_rt_iflist.c##
  26. Net_rt_iflist(int family, int flags, size_t *lenp)## 24 ##src/libroute/net_rt_iflist.c##
  27. {## 25 ##src/libroute/net_rt_iflist.c##
  28. char *ptr;## 26 ##src/libroute/net_rt_iflist.c##
  29. if ((ptr = net_rt_iflist(family, flags, lenp)) == NULL)## 27 ##src/libroute/net_rt_iflist.c##
  30. err_sys("net_rt_iflist error");## 28 ##src/libroute/net_rt_iflist.c##
  31. return (ptr);## 29 ##src/libroute/net_rt_iflist.c##
  32. }## 30 ##src/libroute/net_rt_iflist.c##