net_rt_dump.c 712 B

12345678910111213141516171819202122232425262728293031323334353637
  1. /* include net_rt_dump */
  2. #include "unproute.h"
  3. char *
  4. net_rt_dump(int family, int flags, size_t *lenp)
  5. {
  6. int mib[6];
  7. char *buf;
  8. mib[0] = CTL_NET;
  9. mib[1] = AF_ROUTE;
  10. mib[2] = 0;
  11. mib[3] = family; /* only addresses of this family */
  12. mib[4] = NET_RT_DUMP;
  13. mib[5] = flags; /* not looked at with NET_RT_DUMP */
  14. if (sysctl(mib, 6, NULL, lenp, NULL, 0) < 0)
  15. return(NULL);
  16. if ( (buf = malloc(*lenp)) == NULL)
  17. return(NULL);
  18. if (sysctl(mib, 6, buf, lenp, NULL, 0) < 0)
  19. return(NULL);
  20. return(buf);
  21. }
  22. /* end net_rt_dump */
  23. char *
  24. Net_rt_dump(int family, int flags, size_t *lenp)
  25. {
  26. char *ptr;
  27. if ( (ptr = net_rt_dump(family, flags, lenp)) == NULL)
  28. err_sys("net_rt_dump error");
  29. return(ptr);
  30. }