Updated Branches: refs/heads/master d186ae374 -> 8ba444a60
TS-1729 Fix channel_stats to compile on various Unixen. Note that this is still IPV4 only. Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/8ba444a6 Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/8ba444a6 Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/8ba444a6 Branch: refs/heads/master Commit: 8ba444a605b5ff1769d2d8d493d7fc1e5686c8c7 Parents: d186ae3 Author: Leif Hedstrom <zw...@apache.org> Authored: Sun Apr 28 12:48:58 2013 -0600 Committer: Leif Hedstrom <zw...@apache.org> Committed: Sun Apr 28 12:48:58 2013 -0600 ---------------------------------------------------------------------- CHANGES | 3 + .../experimental/channel_stats/channel_stats.cc | 40 +++++++-------- 2 files changed, 22 insertions(+), 21 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/8ba444a6/CHANGES ---------------------------------------------------------------------- diff --git a/CHANGES b/CHANGES index 76200e2..b1a039e 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,9 @@ Changes with Apache Traffic Server 3.3.3 + *) [TS-1729] Fix channel_stats to compile on various Unixen. Note that this + is still IPV4 only. + *) [TS-1839] We fail "make test" on some platforms, due to install directory missing. http://git-wip-us.apache.org/repos/asf/trafficserver/blob/8ba444a6/plugins/experimental/channel_stats/channel_stats.cc ---------------------------------------------------------------------- diff --git a/plugins/experimental/channel_stats/channel_stats.cc b/plugins/experimental/channel_stats/channel_stats.cc index d6b7724..de5f757 100644 --- a/plugins/experimental/channel_stats/channel_stats.cc +++ b/plugins/experimental/channel_stats/channel_stats.cc @@ -112,39 +112,37 @@ typedef struct intercept_state_t } intercept_state; struct private_seg_t { - struct in_addr net; - struct in_addr mask; + const in_addr_t net; + const in_addr_t mask; }; // don't put inet_addr("255.255.255.255"), see BUGS in 'man 3 inet_addr' static struct private_seg_t private_segs[] = { - {{inet_addr("10.0.0.0")}, {inet_addr("255.0.0.0")}}, - {{inet_addr("127.0.0.0")}, {inet_addr("255.0.0.0")}}, - {{inet_addr("172.16.0.0")}, {inet_addr("255.240.0.0")}}, - {{inet_addr("192.168.0.0")}, {inet_addr("255.255.0.0")}} + {inet_addr("10.0.0.0"), inet_addr("255.0.0.0")}, + {inet_addr("127.0.0.0"), inet_addr("255.0.0.0")}, + {inet_addr("172.16.0.0"), inet_addr("255.240.0.0")}, + {inet_addr("192.168.0.0"), inet_addr("255.255.0.0")} }; + static int num_private_segs = sizeof(private_segs) / sizeof(private_seg_t); // all parameters are in network byte order -static int -is_in_net (const struct in_addr * addr, - const struct in_addr * netaddr, - const struct in_addr * netmask) +static bool +is_in_net(const in_addr_t addr, + const in_addr_t netaddr, + const in_addr_t netmask) { - if ((addr->s_addr & netmask->s_addr) == (netaddr->s_addr & netmask->s_addr)) - return 1; - return 0; + return (addr & netmask) == (netaddr & netmask); } -static int -is_private_ip(const struct in_addr * addr) +static bool +is_private_ip(const in_addr_t addr) { - int i; - for (i = 0; i < num_private_segs; i++) { - if (is_in_net(addr, &private_segs[i].net, &private_segs[i].mask)) - return 1; + for (int i = 0; i < num_private_segs; i++) { + if (is_in_net(addr, private_segs[i].net, private_segs[i].mask)) + return true; } - return 0; + return false; } static int handle_event(TSCont contp, TSEvent event, void *edata); @@ -321,7 +319,7 @@ handle_read_req(TSCont /* contp ATS_UNUSED */, TSHttpTxn txnp) client_addr = (struct sockaddr *) TSHttpTxnClientAddrGet(txnp); if (client_addr->sa_family == AF_INET) { client_addr4 = (struct sockaddr_in *) client_addr; - if (!is_private_ip(&client_addr4->sin_addr)) { + if (!is_private_ip(client_addr4->sin_addr.s_addr)) { client_ip = (char *) TSmalloc(INET_ADDRSTRLEN); inet_ntop(AF_INET, &client_addr4->sin_addr, client_ip, INET_ADDRSTRLEN); debug_api("%s is not a private IP, request denied", client_ip);