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);

Reply via email to