diff options
author | Jakub Zawadzki <darkjames-ws@darkjames.pl> | 2013-12-21 16:16:56 +0000 |
---|---|---|
committer | Jakub Zawadzki <darkjames-ws@darkjames.pl> | 2013-12-21 16:16:56 +0000 |
commit | 3d6fdc55d06aba5a8a73c7d77792963a941ad58a (patch) | |
tree | 87c3615c3e63ce2fbf46709ffb1cb96f79c4b6a1 /epan | |
parent | aa4b08e2ca2785e22e8e49271b7513a28275bbe1 (diff) |
New functions: str_to_ip6(), str_to_ip()
This way we can avoid including lot of system header files in some dissectors
and it might fix bug #9581
svn path=/trunk/; revision=54330
Diffstat (limited to 'epan')
-rw-r--r-- | epan/addr_resolv.c | 20 | ||||
-rw-r--r-- | epan/addr_resolv.h | 3 | ||||
-rw-r--r-- | epan/dissectors/packet-6lowpan.c | 22 | ||||
-rw-r--r-- | epan/dissectors/packet-fcoib.c | 15 | ||||
-rw-r--r-- | epan/dissectors/packet-ftp.c | 18 | ||||
-rw-r--r-- | epan/dissectors/packet-infiniband_sdp.c | 15 | ||||
-rw-r--r-- | epan/dissectors/packet-rtpproxy.c | 14 | ||||
-rw-r--r-- | epan/dissectors/packet-sdp.c | 30 | ||||
-rw-r--r-- | epan/dissectors/packet-tacacs.c | 25 | ||||
-rw-r--r-- | epan/dissectors/packet-uasip.c | 15 |
10 files changed, 34 insertions, 143 deletions
diff --git a/epan/addr_resolv.c b/epan/addr_resolv.c index 464a84e22c..c0ccb6ea99 100644 --- a/epan/addr_resolv.c +++ b/epan/addr_resolv.c @@ -2108,7 +2108,7 @@ read_hosts_file (const char *hostspath) is_ipv6 = TRUE; } else { /* Not valid IPv6 - valid IPv4? */ - if (inet_pton(AF_INET, cp, &host_addr) <= 0) + if (!str_to_ip(cp, &host_addr)) continue; /* no */ is_ipv6 = FALSE; } @@ -2184,7 +2184,7 @@ add_ip_name_from_string (const char *addr, const char *name) is_ipv6 = TRUE; } else { /* Not valid IPv6 - valid IPv4? */ - if (inet_pton(AF_INET, addr, &host_addr) <= 0) + if (!str_to_ip(addr, &host_addr)) return FALSE; /* no */ is_ipv6 = FALSE; } @@ -2294,7 +2294,7 @@ read_subnets_file (const char *subnetspath) ++cp2 ; /* Check if this is a valid IPv4 address */ - if (inet_pton(AF_INET, cp, &host_addr) <= 0) { + if (!str_to_ip(cp, &host_addr)) { continue; /* no */ } @@ -3415,7 +3415,7 @@ get_host_ipaddr6(const char *host, struct e_in6_addr *addrp) struct hostent *hp; #endif /* HAVE_C_ARES */ - if (inet_pton(AF_INET6, host, addrp) > 0) + if (str_to_ip6(host, addrp)) return TRUE; /* It's not a valid dotted-quad IP address; is it a valid @@ -3549,6 +3549,18 @@ addr_resolv_cleanup(void) /*host_name_lookup_cleanup();*/ } +gboolean +str_to_ip(const char *str, void *dst) +{ + return inet_pton(AF_INET, str, dst) > 0; +} + +gboolean +str_to_ip6(const char *str, void *dst) +{ + return inet_pton(AF_INET6, str, dst) > 0; +} + /* * Editor modelines - http://www.wireshark.org/tools/modelines.html * diff --git a/epan/addr_resolv.h b/epan/addr_resolv.h index be20fe17a7..dd06b63821 100644 --- a/epan/addr_resolv.h +++ b/epan/addr_resolv.h @@ -360,6 +360,9 @@ void addr_resolv_cleanup(void); WS_DLL_PUBLIC void manually_resolve_cleanup(void); +gboolean str_to_ip(const char *str, void *dst); +gboolean str_to_ip6(const char *str, void *dst); + #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/epan/dissectors/packet-6lowpan.c b/epan/dissectors/packet-6lowpan.c index 26383bd8db..8ff36ecff8 100644 --- a/epan/dissectors/packet-6lowpan.c +++ b/epan/dissectors/packet-6lowpan.c @@ -25,26 +25,6 @@ */ #include "config.h" -/* Need to get headers for AF_INET6 and inet_pton() */ -#ifdef HAVE_SYS_TYPES_H -#include <sys/types.h> -#endif -#ifdef HAVE_SYS_SOCKET_H -#include <sys/socket.h> -#endif -#ifdef HAVE_NETINET_IN_H -# include <netinet/in.h> -#endif -#ifdef HAVE_ARPA_INET_H -#include <arpa/inet.h> -#endif -#ifdef HAVE_WINSOCK2_H -#include <winsock2.h> -#endif -#ifdef NEED_INET_V6DEFS_H -# include "wsutil/inet_v6defs.h" -#endif - #include <glib.h> #include <epan/packet.h> #include <epan/prefs.h> @@ -2833,7 +2813,7 @@ prefs_6lowpan_apply(void) for (i = 0; i < LOWPAN_CONTEXT_MAX; i++) { if (!lowpan_context_prefs[i]) continue; - if (inet_pton(AF_INET6, lowpan_context_prefs[i], &prefix) <= 0) continue; + if (!str_to_ip6(lowpan_context_prefs[i], &prefix)) continue; /* Set the prefix */ lowpan_context_insert(i, IEEE802154_BCAST_PAN, 64, &prefix, 0); } /* for */ diff --git a/epan/dissectors/packet-fcoib.c b/epan/dissectors/packet-fcoib.c index 7de20ea565..b832852bb8 100644 --- a/epan/dissectors/packet-fcoib.c +++ b/epan/dissectors/packet-fcoib.c @@ -39,19 +39,6 @@ #include "packet-infiniband.h" #include "packet-fc.h" -#ifdef HAVE_ARPA_INET_H -# include <arpa/inet.h> -#endif -#ifdef HAVE_SYS_SOCKET_H -# include <sys/socket.h> /* needed to define AF_ values on UNIX */ -#endif -#ifdef HAVE_WINSOCK2_H -# include <winsock2.h> /* needed to define AF_ values on Windows */ -#endif -#ifdef NEED_INET_V6DEFS_H -# include "wsutil/inet_v6defs.h" -#endif - void proto_register_fcoib(void); void proto_reg_handoff_fcoib(void); @@ -454,7 +441,7 @@ proto_reg_handoff_fcoib(void) SET_ADDRESS(&manual_addr[i], AT_IB, sizeof(guint16), manual_addr_data[i]); } } else { /* GID */ - if (inet_pton(AF_INET6, gPREF_ID[i], manual_addr_data[i]) <= 0) { + if (!str_to_ip6( gPREF_ID[i], manual_addr_data[i])) { error_occured = TRUE; } else { SET_ADDRESS(&manual_addr[i], AT_IB, GID_SIZE, manual_addr_data[i]); diff --git a/epan/dissectors/packet-ftp.c b/epan/dissectors/packet-ftp.c index 9f66a16438..f64ccb4925 100644 --- a/epan/dissectors/packet-ftp.c +++ b/epan/dissectors/packet-ftp.c @@ -39,19 +39,7 @@ #include <epan/conversation.h> #include <epan/expert.h> #include <epan/wmem/wmem.h> - -#ifdef HAVE_ARPA_INET_H -#include <arpa/inet.h> -#endif -#ifdef HAVE_SYS_SOCKET_H -#include <sys/socket.h> /* needed to define AF_ values on UNIX */ -#endif -#ifdef HAVE_WINSOCK2_H -#include <winsock2.h> /* needed to define AF_ values on Windows */ -#endif -#ifdef NEED_INET_V6DEFS_H -#include "wsutil/inet_v6defs.h" /* if not a *NIX system */ -#endif +#include <epan/addr_resolv.c> void proto_register_ftp(void); void proto_reg_handoff_ftp(void); @@ -393,13 +381,13 @@ parse_eprt_request(const guchar* line, gint linelen, guint32 *eprt_af, ip_str = wmem_strndup(wmem_packet_scope(), field, fieldlen); if (*eprt_af == EPRT_AF_IPv4) { - if (inet_pton(AF_INET, ip_str, eprt_ip) > 0) + if (str_to_ip(ip_str, eprt_ip)) ret = TRUE; else ret = FALSE; } else if (*eprt_af == EPRT_AF_IPv6) { - if (inet_pton(AF_INET6, ip_str, eprt_ipv6) > 0) + if (str_to_ip6(ip_str, eprt_ipv6)) ret = TRUE; else ret = FALSE; diff --git a/epan/dissectors/packet-infiniband_sdp.c b/epan/dissectors/packet-infiniband_sdp.c index 67966767dc..d9a3604ef6 100644 --- a/epan/dissectors/packet-infiniband_sdp.c +++ b/epan/dissectors/packet-infiniband_sdp.c @@ -35,19 +35,6 @@ #include <stdlib.h> #include <errno.h> -#ifdef HAVE_ARPA_INET_H -# include <arpa/inet.h> -#endif -#ifdef HAVE_SYS_SOCKET_H -# include <sys/socket.h> /* needed to define AF_ values on UNIX */ -#endif -#ifdef HAVE_WINSOCK2_H -# include <winsock2.h> /* needed to define AF_ values on Windows */ -#endif -#ifdef NEED_INET_V6DEFS_H -# include "wsutil/inet_v6defs.h" -#endif - #include "packet-infiniband.h" void proto_register_ib_sdp(void); @@ -552,7 +539,7 @@ proto_reg_handoff_ib_sdp(void) SET_ADDRESS(&manual_addr[i], AT_IB, sizeof(guint16), manual_addr_data[i]); } } else { /* GID */ - if (inet_pton(AF_INET6, gPREF_ID[i], manual_addr_data[i]) <= 0) { + if (!str_to_ip6(gPREF_ID[i], manual_addr_data[i])) { error_occured = TRUE; } else { SET_ADDRESS(&manual_addr[i], AT_IB, GID_SIZE, manual_addr_data[i]); diff --git a/epan/dissectors/packet-rtpproxy.c b/epan/dissectors/packet-rtpproxy.c index 1348b10591..f5cc756e16 100644 --- a/epan/dissectors/packet-rtpproxy.c +++ b/epan/dissectors/packet-rtpproxy.c @@ -41,16 +41,6 @@ #include <epan/expert.h> #include <epan/rtp_pt.h> -#ifdef HAVE_ARPA_INET_H -#include <arpa/inet.h> -#endif -#ifdef HAVE_WINSOCK2_H -#include <winsock2.h> /* needed to define AF_ values on Windows */ -#endif -#ifdef NEED_INET_V6DEFS_H -#include "wsutil/inet_v6defs.h" -#endif - /* For setting up RTP/RTCP dissectors based on the RTPproxy's answers */ #include "packet-rtp.h" #include "packet-rtcp.h" @@ -760,14 +750,14 @@ dissect_rtpproxy(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data /* Extract IP */ tmp = tvb_find_line_end(tvb, offset, -1, &new_offset, FALSE); if (tvb_find_guint8(tvb, offset, -1, ':') == -1){ - inet_pton(AF_INET, (char*)tvb_get_string(wmem_packet_scope(), tvb, offset, tmp), ipaddr); + str_to_ip((char*)tvb_get_string(wmem_packet_scope(), tvb, offset, tmp), ipaddr); addr.type = AT_IPv4; addr.len = 4; addr.data = wmem_memdup(wmem_packet_scope(), ipaddr, 4); proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_ipv4, tvb, offset, tmp, ENC_ASCII | ENC_NA); } else{ - inet_pton(AF_INET6, (char*)tvb_get_string(wmem_packet_scope(), tvb, offset, tmp), ipaddr); + str_to_ip6((char*)tvb_get_string(wmem_packet_scope(), tvb, offset, tmp), ipaddr); addr.type = AT_IPv6; addr.len = 16; addr.data = wmem_memdup(wmem_packet_scope(), ipaddr, 16); diff --git a/epan/dissectors/packet-sdp.c b/epan/dissectors/packet-sdp.c index dadfbaea86..d6f7f165aa 100644 --- a/epan/dissectors/packet-sdp.c +++ b/epan/dissectors/packet-sdp.c @@ -28,27 +28,6 @@ #include "config.h" -#ifdef HAVE_SYS_TYPES_H -#include <sys/types.h> -#endif -#ifdef HAVE_SYS_SOCKET_H -#include <sys/socket.h> -#endif -#ifdef HAVE_NETINET_IN_H -# include <netinet/in.h> -#endif -#ifdef HAVE_ARPA_INET_H -#include <arpa/inet.h> -#endif - -#ifdef HAVE_WINSOCK2_H -#include <winsock2.h> /* needed to define AF_ values on Windows */ -#endif - -#ifdef NEED_INET_V6DEFS_H -# include "wsutil/inet_v6defs.h" -#endif - #include <glib.h> #include <epan/packet.h> @@ -1357,9 +1336,8 @@ static void dissect_sdp_media_attribute(tvbuff_t *tvb, packet_info *pinfo, proto port_end_offset = tvb_find_guint8(tvb, port_offset, -1, ';'); } /* Attempt to convert address */ - if (inet_pton(AF_INET, - (char*)tvb_get_string(wmem_packet_scope(), tvb, address_offset, port_offset-address_offset), - &media_info->msrp_ipaddr) > 0) { + if (str_to_ip((char*)tvb_get_string(wmem_packet_scope(), tvb, address_offset, port_offset-address_offset), + &media_info->msrp_ipaddr)) { /* Get port number */ media_info->msrp_port_number = atoi((char*)tvb_get_string(wmem_packet_scope(), tvb, port_offset + 1, port_end_offset - port_offset - 1)); /* Set flag so this info can be used */ @@ -1663,7 +1641,7 @@ convert_disposable_media(transport_info_t* transport_info, disposable_media_info (media_info->connection_type != NULL)) { if (strcmp(media_info->connection_type, "IP4") == 0) { transport_info->src_addr[transport_index].data = wmem_alloc(wmem_file_scope(), 4); - if (inet_pton(AF_INET, media_info->connection_address, (void*)transport_info->src_addr[transport_index].data) > 0) { + if (str_to_ip(media_info->connection_address, (void*)transport_info->src_addr[transport_index].data)) { /* connection_address could be converted to a valid ipv4 address*/ transport_info->proto_bitmask[transport_index] |= SDP_IPv4; transport_info->src_addr[transport_index].type = AT_IPv4; @@ -1671,7 +1649,7 @@ convert_disposable_media(transport_info_t* transport_info, disposable_media_info } } else if (strcmp(media_info->connection_type, "IP6") == 0) { transport_info->src_addr[transport_index].data = wmem_alloc(wmem_file_scope(), 16); - if (inet_pton(AF_INET6, media_info->connection_address, (void*)transport_info->src_addr[transport_index].data) > 0) { + if (str_to_ip6(media_info->connection_address, (void*)transport_info->src_addr[transport_index].data)) { /* connection_address could be converted to a valid ipv6 address*/ transport_info->proto_bitmask[transport_index] |= SDP_IPv6; transport_info->src_addr[transport_index].type = AT_IPv6; diff --git a/epan/dissectors/packet-tacacs.c b/epan/dissectors/packet-tacacs.c index 3b4abf6b2b..fed9e4fc26 100644 --- a/epan/dissectors/packet-tacacs.c +++ b/epan/dissectors/packet-tacacs.c @@ -36,27 +36,6 @@ #include "config.h" -#ifdef HAVE_SYS_TYPES_H -#include <sys/types.h> -#endif -#ifdef HAVE_SYS_SOCKET_H -#include <sys/socket.h> -#endif -#ifdef HAVE_NETINET_IN_H -# include <netinet/in.h> -#endif -#ifdef HAVE_ARPA_INET_H -#include <arpa/inet.h> -#endif - -#ifdef HAVE_WINSOCK2_H -#include <winsock2.h> /* needed to define AF_ values on Windows */ -#endif - -#ifdef NEED_INET_V6DEFS_H -# include "wsutil/inet_v6defs.h" -#endif - #include <glib.h> #include <wsutil/md5.h> @@ -827,8 +806,8 @@ mkipv4_address( address **addr, const char *str_addr ) *addr=(address *)g_malloc( sizeof(address) ); addr_data=(char *)g_malloc( 4 ); - ret = inet_pton( AF_INET, str_addr, addr_data ); - if (ret==1) + ret = str_to_ip(str_addr, addr_data); + if (ret) SET_ADDRESS(*addr, AT_IPv4, 4, addr_data); else SET_ADDRESS(*addr, AT_STRINGZ, (int)strlen(ADDR_INVLD)+1, ADDR_INVLD); diff --git a/epan/dissectors/packet-uasip.c b/epan/dissectors/packet-uasip.c index 8ab38ffc8b..49049644bc 100644 --- a/epan/dissectors/packet-uasip.c +++ b/epan/dissectors/packet-uasip.c @@ -27,19 +27,6 @@ #include <string.h> -#ifdef HAVE_ARPA_INET_H -# include <arpa/inet.h> -#endif -#ifdef HAVE_SYS_SOCKET_H -# include <sys/socket.h> /* needed to define AF_ values on UNIX */ -#endif -#ifdef HAVE_WINSOCK2_H -# include <winsock2.h> /* needed to define AF_ values on Windows */ -#endif -#ifdef NEED_INET_V6DEFS_H -# include "wsutil/inet_v6defs.h" -#endif - #include <glib.h> #include "epan/packet.h" @@ -496,7 +483,7 @@ void proto_reg_handoff_uasip(void) } if (strcmp(pref_proxy_ipaddr_s, "") != 0) { - if (inet_pton(AF_INET, pref_proxy_ipaddr_s, proxy_ipaddr) > 0) { + if (str_to_ip(pref_proxy_ipaddr_s, proxy_ipaddr)) { use_proxy_ipaddr = TRUE; } else { g_warning("uasip: Invalid 'Proxy IP Address': \"%s\"", pref_proxy_ipaddr_s); |