]> git.ipfire.org Git - thirdparty/openvpn.git/commitdiff
Print "Virtual IPv6 Address" on management interface queries [v4]
authorGert Doering <gert@greenie.muc.de>
Wed, 10 Apr 2013 18:55:37 +0000 (20:55 +0200)
committerGert Doering <gert@greenie.muc.de>
Fri, 12 Apr 2013 11:03:26 +0000 (13:03 +0200)
Add extra column to management queries for "status 2" or "status 3"
after "Virtual Address", empty if no IPv6 address assigned to this
client (or IPv6 not active at all).

Signed-off-by: Gert Doering <gert@greenie.muc.de>
Acked-by: Arne Schwabe <arne@rfc2549.org>
Message-Id: <20130411150918.GW569@greenie.muc.de>
URL: http://article.gmane.org/gmane.network.openvpn.devel/7503

src/openvpn/multi.c
src/openvpn/multi.h

index 5900523eff89eda93ca624baf55afba3c55665bf..f016b149aad0941d60a15f5349976870e10f77eb 100644 (file)
@@ -807,8 +807,8 @@ multi_print_status (struct multi_context *m, struct status_output *so, const int
           */
          status_printf (so, "TITLE%c%s", sep, title_string);
          status_printf (so, "TIME%c%s%c%u", sep, time_string (now, 0, false, &gc_top), sep, (unsigned int)now);
-         status_printf (so, "HEADER%cCLIENT_LIST%cCommon Name%cReal Address%cVirtual Address%cBytes Received%cBytes Sent%cConnected Since%cConnected Since (time_t)%cUsername%cClient ID",
-                        sep, sep, sep, sep, sep, sep, sep, sep, sep, sep);
+         status_printf (so, "HEADER%cCLIENT_LIST%cCommon Name%cReal Address%cVirtual Address%cVirtual IPv6 Address%cBytes Received%cBytes Sent%cConnected Since%cConnected Since (time_t)%cUsername%cClient ID",
+                        sep, sep, sep, sep, sep, sep, sep, sep, sep, sep, sep);
          hash_iterator_init (m->hash, &hi);
          while ((he = hash_iterator_next (&hi)))
            {
@@ -817,7 +817,7 @@ multi_print_status (struct multi_context *m, struct status_output *so, const int
 
              if (!mi->halt)
                {
-                 status_printf (so, "CLIENT_LIST%c%s%c%s%c%s%c" counter_format "%c" counter_format "%c%s%c%u%c%s%c"
+                 status_printf (so, "CLIENT_LIST%c%s%c%s%c%s%c%s%c" counter_format "%c" counter_format "%c%s%c%u%c%s%c"
 #ifdef MANAGEMENT_DEF_AUTH
                                 "%lu",
 #else
@@ -826,6 +826,7 @@ multi_print_status (struct multi_context *m, struct status_output *so, const int
                                 sep, tls_common_name (mi->context.c2.tls_multi, false),
                                 sep, mroute_addr_print (&mi->real, &gc),
                                 sep, print_in_addr_t (mi->reporting_addr, IA_EMPTY_IF_UNDEF, &gc),
+                                sep, print_in6_addr (mi->reporting_addr_ipv6, IA_EMPTY_IF_UNDEF, &gc),
                                 sep, mi->context.c2.link_read_bytes,
                                 sep, mi->context.c2.link_write_bytes,
                                 sep, time_string (mi->created, 0, false, &gc),
@@ -1857,6 +1858,7 @@ multi_connection_established (struct multi_context *m, struct multi_instance *mi
 
          /* set our client's VPN endpoint for status reporting purposes */
          mi->reporting_addr = mi->context.c2.push_ifconfig_local;
+         mi->reporting_addr_ipv6 = mi->context.c2.push_ifconfig_ipv6_local;
 
          /* set context-level authentication flag */
          mi->context.c2.context_auth = CAS_SUCCEEDED;
index 2bc0c8a1c41014b2f03ed46fbc1787201f72c54a..fc2ffb24609e83548d89f17a5409de9ac295b96d 100644 (file)
@@ -88,6 +88,7 @@ struct multi_instance {
   bool socket_set_called;
 
   in_addr_t reporting_addr;       /* IP address shown in status listing */
+  struct in6_addr reporting_addr_ipv6;  /* IPv6 address in status listing */
 
   bool did_open_context;
   bool did_real_hash;