Instead of using the implicit protocol string that is returned by the proto/af to names function return a constant string. The strings have become part of the wire protocl and we do not want them to change we the printing of proto/af changes. --- src/openvpn/options.c | 2 +- src/openvpn/socket.c | 22 ++++++++++++---------- src/openvpn/socket.h | 2 +- 3 files changed, 14 insertions(+), 12 deletions(-)
diff --git a/src/openvpn/options.c b/src/openvpn/options.c index a42bf58..6906ea1 100644 --- a/src/openvpn/options.c +++ b/src/openvpn/options.c @@ -2905,7 +2905,7 @@ options_string (const struct options *o, buf_printf (&out, ",dev-type %s", dev_type_string (o->dev, o->dev_type)); buf_printf (&out, ",link-mtu %d", EXPANDED_SIZE (frame)); buf_printf (&out, ",tun-mtu %d", PAYLOAD_SIZE (frame)); - buf_printf (&out, ",proto %s", proto2ascii (proto_remote (o->ce.proto, remote),o->ce.af, true)); + buf_printf (&out, ",proto %s", proto_remote (o->ce.proto, remote)); /* send tun_ipv6 only in peer2peer mode - in client/server mode, it * is usually pushed by the server, triggering a non-helpful warning diff --git a/src/openvpn/socket.c b/src/openvpn/socket.c index d62e418..2edbce2 100644 --- a/src/openvpn/socket.c +++ b/src/openvpn/socket.c @@ -2604,19 +2604,21 @@ addr_family_name (int af) * has always sent UDPv4, TCPv4 over the wire. Keep these * strings for backward compatbility */ -int +const char* proto_remote (int proto, bool remote) { ASSERT (proto >= 0 && proto < PROTO_N); - if (remote) - { - switch (proto) - { - case PROTO_TCP_SERVER: return PROTO_TCP_CLIENT; - case PROTO_TCP_CLIENT: return PROTO_TCP_SERVER; - } - } - return proto; + if (proto == PROTO_UDP) + return "UDPv4"; + + if ( (remote && proto == PROTO_TCP_CLIENT) || + (!remote && proto == PROTO_TCP_SERVER)) + return "TCPv4_SERVER"; + if ( (remote && proto == PROTO_TCP_SERVER) || + (!remote && proto == PROTO_TCP_CLIENT)) + return "TCPv4_CLIENT"; + + ASSERT (0); } /* diff --git a/src/openvpn/socket.h b/src/openvpn/socket.h index 2ccd4db..4b944b0 100644 --- a/src/openvpn/socket.h +++ b/src/openvpn/socket.h @@ -532,7 +532,7 @@ int ascii2proto (const char* proto_name); sa_family_t ascii2af (const char* proto_name); const char *proto2ascii (int proto, sa_family_t af, bool display_form); const char *proto2ascii_all (struct gc_arena *gc); -int proto_remote (int proto, bool remote); +const char *proto_remote (int proto, bool remote); const char *addr_family_name(int af); /* -- 1.8.3.4 (Apple Git-47)