X-Git-Url: https://git.octo.it/?p=collectd.git;a=blobdiff_plain;f=src%2Futils_dns.c;h=712b1aece8e3b1fe584715ee7e0e1e128cec97f4;hp=22c9b95994377f9ed1752d4192eb25c29a97b8e8;hb=633c3966f770e4d46651a2fe219a18d8a9907a9f;hpb=d1c3baabf0c7bf65f699fb66db5b2aea92d1f5e7 diff --git a/src/utils_dns.c b/src/utils_dns.c index 22c9b959..712b1aec 100644 --- a/src/utils_dns.c +++ b/src/utils_dns.c @@ -1,7 +1,7 @@ /* * collectd - src/utils_dns.c - * Modifications Copyright (C) 2006 Florian octo Forster - * Copyright (C) 2002 The Measurement Factory, Inc. + * Copyright (C) 2006 Florian octo Forster + * Copyright (C) 2002 The Measurement Factory, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -30,7 +30,7 @@ * * Authors: * The Measurement Factory, Inc. - * Florian octo Forster + * Florian octo Forster */ #define _BSD_SOURCE @@ -39,35 +39,16 @@ #include "plugin.h" #include "common.h" -#if HAVE_NETINET_IN_SYSTM_H -# include -#endif -#if HAVE_NETINET_IN_H -# include -#endif -#if HAVE_ARPA_INET_H -# include -#endif #if HAVE_SYS_SOCKET_H # include #endif -#if HAVE_ARPA_NAMESER_H -# include -#endif -#if HAVE_ARPA_NAMESER_COMPAT_H -# include -#endif - #if HAVE_NET_IF_ARP_H # include #endif #if HAVE_NET_IF_H # include #endif -#if HAVE_NETINET_IF_ETHER_H -# include -#endif #if HAVE_NET_PPP_DEFS_H # include #endif @@ -75,23 +56,45 @@ # include #endif -#if HAVE_NETDB_H -# include +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#if HAVE_NETINET_IP6_H +# include +#endif +#if HAVE_NETINET_IP_COMPAT_H +# include +#endif +#if HAVE_NETINET_IF_ETHER_H +# include #endif - #if HAVE_NETINET_IP_H # include #endif #ifdef HAVE_NETINET_IP_VAR_H # include #endif -#if HAVE_NETINET_IP6_H -# include -#endif #if HAVE_NETINET_UDP_H # include #endif +#if HAVE_ARPA_INET_H +# include +#endif +#if HAVE_ARPA_NAMESER_H +# include +#endif +#if HAVE_ARPA_NAMESER_COMPAT_H +# include +#endif + +#if HAVE_NETDB_H +# include +#endif + #if HAVE_PCAP_H # include #endif @@ -118,7 +121,7 @@ #if HAVE_STRUCT_UDPHDR_UH_DPORT && HAVE_STRUCT_UDPHDR_UH_SPORT # define UDP_DEST uh_dport -# define UDP_SRC uh_dport +# define UDP_SRC uh_sport #elif HAVE_STRUCT_UDPHDR_DEST && HAVE_STRUCT_UDPHDR_SOURCE # define UDP_DEST dest # define UDP_SRC source @@ -441,6 +444,7 @@ handle_udp(const struct udphdr *udp, int len) return 1; } +#if HAVE_NETINET_IP6_H static int handle_ipv6 (struct ip6_hdr *ipv6, int len) { @@ -448,8 +452,7 @@ handle_ipv6 (struct ip6_hdr *ipv6, int len) unsigned int offset; int nexthdr; - struct in6_addr s_addr; - struct in6_addr d_addr; + struct in6_addr c_src_addr; uint16_t payload_len; if (0 > len) @@ -457,11 +460,10 @@ handle_ipv6 (struct ip6_hdr *ipv6, int len) offset = sizeof (struct ip6_hdr); nexthdr = ipv6->ip6_nxt; - s_addr = ipv6->ip6_src; - d_addr = ipv6->ip6_dst; + c_src_addr = ipv6->ip6_src; payload_len = ntohs (ipv6->ip6_plen); - if (ignore_list_match (&s_addr)) + if (ignore_list_match (&c_src_addr)) return (0); /* Parse extension headers. This only handles the standard headers, as @@ -470,7 +472,6 @@ handle_ipv6 (struct ip6_hdr *ipv6, int len) || (IPPROTO_HOPOPTS == nexthdr) /* Hop-by-Hop options. */ || (IPPROTO_FRAGMENT == nexthdr) /* fragmentation header. */ || (IPPROTO_DSTOPTS == nexthdr) /* destination options. */ - || (IPPROTO_DSTOPTS == nexthdr) /* destination options. */ || (IPPROTO_AH == nexthdr) /* destination options. */ || (IPPROTO_ESP == nexthdr)) /* encapsulating security payload. */ { @@ -512,21 +513,31 @@ handle_ipv6 (struct ip6_hdr *ipv6, int len) return (1); /* Success */ } /* int handle_ipv6 */ +/* #endif HAVE_NETINET_IP6_H */ + +#else /* if !HAVE_NETINET_IP6_H */ +static int +handle_ipv6 (__attribute__((unused)) void *pkg, + __attribute__((unused)) int len) +{ + return (0); +} +#endif /* !HAVE_NETINET_IP6_H */ static int handle_ip(const struct ip *ip, int len) { char buf[PCAP_SNAPLEN]; int offset = ip->ip_hl << 2; - struct in6_addr s_addr; - struct in6_addr d_addr; + struct in6_addr c_src_addr; + struct in6_addr c_dst_addr; if (ip->ip_v == 6) - return (handle_ipv6 ((struct ip6_hdr *) ip, len)); + return (handle_ipv6 ((void *) ip, len)); - in6_addr_from_buffer (&s_addr, &ip->ip_src.s_addr, sizeof (ip->ip_src.s_addr), AF_INET); - in6_addr_from_buffer (&d_addr, &ip->ip_dst.s_addr, sizeof (ip->ip_dst.s_addr), AF_INET); - if (ignore_list_match (&s_addr)) + in6_addr_from_buffer (&c_src_addr, &ip->ip_src.s_addr, sizeof (ip->ip_src.s_addr), AF_INET); + in6_addr_from_buffer (&c_dst_addr, &ip->ip_dst.s_addr, sizeof (ip->ip_dst.s_addr), AF_INET); + if (ignore_list_match (&c_src_addr)) return (0); if (IPPROTO_UDP != ip->ip_p) return 0; @@ -620,7 +631,7 @@ handle_ether(const u_char * pkt, int len) return 0; memcpy(buf, pkt, len); if (ETHERTYPE_IPV6 == etype) - return (handle_ipv6 ((struct ip6_hdr *) buf, len)); + return (handle_ipv6 ((void *) buf, len)); else return handle_ip((struct ip *) buf, len); } @@ -653,7 +664,7 @@ handle_linux_sll (const u_char *pkt, int len) return 0; if (ETHERTYPE_IPV6 == etype) - return (handle_ipv6 ((struct ip6_hdr *) pkt, len)); + return (handle_ipv6 ((void *) pkt, len)); else return handle_ip((struct ip *) pkt, len); }