0003-ifconfig-More-info-on-tunnel-interfaces.patch 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. From 6922b5fd00efbddf90ddcc5b05dc0161bdbbf6a0 Mon Sep 17 00:00:00 2001
  2. From: Mats Erik Andersson <gnu@gisladisker.se>
  3. Date: Mon, 20 Jul 2015 23:28:19 +0200
  4. Subject: [PATCH 03/60] ifconfig: More info on tunnel interfaces.
  5. All formats display point-to-point destination.
  6. Display tunnel endpoints on BSD systems.
  7. ---
  8. ChangeLog | 22 ++++++++++++++++++++++
  9. ifconfig/options.c | 7 +++++++
  10. ifconfig/system/bsd.c | 37 +++++++++++++++++++++++++++++++++++--
  11. ifconfig/system/bsd.h | 8 +++++++-
  12. 4 files changed, 71 insertions(+), 3 deletions(-)
  13. diff --git a/ChangeLog b/ChangeLog
  14. index 18a584ba..d0172fa8 100644
  15. --- a/ChangeLog
  16. +++ b/ChangeLog
  17. @@ -1,3 +1,25 @@
  18. +2015-07-20 Mats Erik Andersson <gnu@gisladisker.se>
  19. +
  20. + ifconfig: More info on tunnel interfaces.
  21. +
  22. + * ifconfig/options.c (formats) <net-tools format>: Add
  23. + destination address for point-to-point interfaces. It is
  24. + present in some other formats.
  25. + <unix format>: Display tunnel addresses for p-t-p interfaces.
  26. + <osf format>: Add destination address for p-t-p interfaces
  27. + and hardware type and hardware address for any device.
  28. +
  29. + * ifconfig/system/bsd.c (system_fh_brdaddr_query): Check
  30. + that IFF_BROADCAST is set and access the relevant member
  31. + `fp->ifa_broadaddr'.
  32. + (system_fh_brdaddr): Check for set IFF_BROADCAST.
  33. + (system_fh_tunnel_query, system_fh_tundst, system_fh_tunsrc):
  34. + New functions.
  35. + * ifconfig/system/bsd.h (SYSTEM_FORMAT_HANDLER): Add the
  36. + keys `tunnel?', `tundst', and `tunsrc'.
  37. + (system_fh_tunnel_query, system_fh_tundst, system_fh_tunsrc):
  38. + New prototypes.
  39. +
  40. 2015-07-18 Mats Erik Andersson <gnu@gisladisker.se>
  41. ifconfig: Improve the support for GNU/Hurd.
  42. diff --git a/ifconfig/options.c b/ifconfig/options.c
  43. index 3356f0e5..2f20e75f 100644
  44. --- a/ifconfig/options.c
  45. +++ b/ifconfig/options.c
  46. @@ -102,6 +102,7 @@ struct format formats[] = {
  47. "${name}${exists?}{hwtype?}{${hwtype?}{${tab}{10}Link encap:${hwtype}}"
  48. "${hwaddr?}{ HWaddr ${hwaddr}}}${\\n}"
  49. "${addr?}{${tab}{10}inet addr:${addr}"
  50. + "${dstaddr?}{ P-t-P:${dstaddr}}"
  51. "${brdaddr?}{ Bcast:${brdaddr}}"
  52. "${netmask?}{ Mask:${netmask}}"
  53. "${newline}}"
  54. @@ -164,6 +165,8 @@ struct format formats[] = {
  55. "${exists?}{hwtype?}{"
  56. "${hwtype?}{${\\t}${hwtype}${exists?}{hwaddr?}{"
  57. "${hwaddr?}{ ${hwaddr}}}${\\n}}}"
  58. + "${exists?}{tunnel?}{"
  59. + "${tunnel?}{${\\t}tunnel inet ${tunsrc} --> ${tundst}${\\n}}}"
  60. "${addr?}{${\\t}inet ${addr}"
  61. "${dstaddr?}{ --> ${dstaddr}}"
  62. " netmask ${netmask}{0}{%#02x}${netmask}{1}{%02x}"
  63. @@ -180,9 +183,13 @@ struct format formats[] = {
  64. "${ifdisplay?}{"
  65. "${name}: flags=${flags}{number}{%x}<${flags}{string}{,}>${\\n}"
  66. "${addr?}{${\\t}inet ${addr}"
  67. + "${dstaddr?}{ --> ${dstaddr}}"
  68. " netmask ${netmask}{0}{%02x}${netmask}{1}{%02x}"
  69. "${netmask}{2}{%02x}${netmask}{3}{%02x}"
  70. "${brdaddr?}{ broadcast ${brdaddr}}" "${mtu?}{ ipmtu ${mtu}}${\\n}}"
  71. + "${exists?}{hwtype?}{"
  72. + "${hwtype?}{${\\t}${hwtype}${exists?}{hwaddr?}{"
  73. + "${hwaddr?}{ ${hwaddr}}}${\\n}}}"
  74. "}"
  75. },
  76. {"check",
  77. diff --git a/ifconfig/system/bsd.c b/ifconfig/system/bsd.c
  78. index 47461242..910a75ef 100644
  79. --- a/ifconfig/system/bsd.c
  80. +++ b/ifconfig/system/bsd.c
  81. @@ -217,7 +217,7 @@ system_fh_brdaddr_query (format_data_t form, int argc, char *argv[])
  82. strcmp (fp->ifa_name, form->ifr->ifr_name))
  83. continue;
  84. - if (fp->ifa_netmask)
  85. + if ((fp->ifa_flags & IFF_BROADCAST) && fp->ifa_broadaddr)
  86. missing = 0;
  87. break;
  88. }
  89. @@ -242,7 +242,7 @@ system_fh_brdaddr (format_data_t form, int argc, char *argv[])
  90. strcmp (fp->ifa_name, form->ifr->ifr_name))
  91. continue;
  92. - if (fp->ifa_broadaddr)
  93. + if ((fp->ifa_flags & IFF_BROADCAST) && fp->ifa_broadaddr)
  94. {
  95. missing = 0;
  96. put_addr (form, argc, argv, fp->ifa_broadaddr);
  97. @@ -588,3 +588,36 @@ system_fh_status (format_data_t form, int argc, char *argv[])
  98. #endif /* SIOCGIFMEDIA */
  99. put_string (form, "(not known)");
  100. }
  101. +
  102. +void
  103. +system_fh_tunnel_query (format_data_t form, int argc, char *argv[])
  104. +{
  105. +#if defined SIOCGIFPSRCADDR && defined SIOCGIFPDSTADDR
  106. + if (ioctl (form->sfd, SIOCGIFPSRCADDR, form->ifr) >= 0)
  107. + select_arg (form, argc, argv, 0);
  108. + else
  109. +#endif /* SIOCGIFPSRCADDR && SIOCGIFPDSTADDR */
  110. + select_arg (form, argc, argv, 1);
  111. +}
  112. +
  113. +void
  114. +system_fh_tundst (format_data_t form, int argc, char *argv[])
  115. +{
  116. +#ifdef SIOCGIFPDSTADDR
  117. + if (ioctl (form->sfd, SIOCGIFPDSTADDR, form->ifr) >= 0)
  118. + put_addr (form, argc, argv, &form->ifr->ifr_addr);
  119. + else
  120. + put_string (form, "(no phydst)");
  121. +#endif /* SIOCGIFPDSTADDR */
  122. +}
  123. +
  124. +void
  125. +system_fh_tunsrc (format_data_t form, int argc, char *argv[])
  126. +{
  127. +#ifdef SIOCGIFPSRCADDR
  128. + if (ioctl (form->sfd, SIOCGIFPSRCADDR, form->ifr) >= 0)
  129. + put_addr (form, argc, argv, &form->ifr->ifr_addr);
  130. + else
  131. + put_string (form, "(no physrc)");
  132. +#endif /* SIOCGIFPSRCADDR */
  133. +}
  134. diff --git a/ifconfig/system/bsd.h b/ifconfig/system/bsd.h
  135. index 0b802a60..918c1f2c 100644
  136. --- a/ifconfig/system/bsd.h
  137. +++ b/ifconfig/system/bsd.h
  138. @@ -71,7 +71,10 @@ struct system_ifconfig
  139. {"netmask?", system_fh_netmask_query}, \
  140. {"netmask", system_fh_netmask}, \
  141. {"status?", system_fh_status_query}, \
  142. - {"status", system_fh_status},
  143. + {"status", system_fh_status}, \
  144. + {"tunnel?", system_fh_tunnel_query}, \
  145. + {"tundst", system_fh_tundst}, \
  146. + {"tunsrc", system_fh_tunsrc},
  147. void system_fh_brdaddr_query (format_data_t form, int argc, char *argv[]);
  148. void system_fh_brdaddr (format_data_t form, int argc, char *argv[]);
  149. @@ -85,5 +88,8 @@ void system_fh_netmask_query (format_data_t form, int argc, char *argv[]);
  150. void system_fh_netmask (format_data_t form, int argc, char *argv[]);
  151. void system_fh_status_query (format_data_t form, int argc, char *argv[]);
  152. void system_fh_status (format_data_t form, int argc, char *argv[]);
  153. +void system_fh_tunnel_query (format_data_t form, int argc, char *argv[]);
  154. +void system_fh_tundst (format_data_t form, int argc, char *argv[]);
  155. +void system_fh_tunsrc (format_data_t form, int argc, char *argv[]);
  156. #endif /* IFCONFIG_SYSTEM_BSD_H */
  157. --
  158. 2.26.0.292.g33ef6b2f38