>From a625520d878e455a62f2f890920915e482d36e73 Mon Sep 17 00:00:00 2001
From: Wolfgang Walter <tintenfi...@stusta.de>
Date: Sun, 6 Apr 2014 13:20:07 +0200
Subject: [PATCH 5/6] Logging: add %<csi> and %<csp>

csi logs the ip address (which is one of the Traffic Server) the client
request arrived.

csp logs the port the client request arrived.
---
 proxy/http/HttpSM.cc           |  1 +
 proxy/logging/Log.cc           | 15 +++++++++++++++
 proxy/logging/LogAccess.cc     | 18 ++++++++++++++++++
 proxy/logging/LogAccess.h      |  2 ++
 proxy/logging/LogAccessHttp.cc | 22 ++++++++++++++++++++++
 proxy/logging/LogAccessHttp.h  |  2 ++
 6 files changed, 60 insertions(+)

diff --git a/proxy/http/HttpSM.cc b/proxy/http/HttpSM.cc
index 2a65209..b45d5ba 100644
--- a/proxy/http/HttpSM.cc
+++ b/proxy/http/HttpSM.cc
@@ -544,6 +544,7 @@ HttpSM::attach_client_session(HttpClientSession * 
client_vc, IOBufferReader * bu
 
   ats_ip_copy(&t_state.client_info.addr, netvc->get_remote_addr());
   t_state.client_info.port = netvc->get_local_port();
+  ats_ip_copy(&t_state.client_info.local_addr, netvc->get_local_addr());
   t_state.client_info.is_transparent = netvc->get_is_transparent();
   t_state.backdoor_request = client_vc->backdoor_connect;
   t_state.client_info.port_attribute = 
static_cast<HttpProxyPort::TransportType>(netvc->attributes);
diff --git a/proxy/logging/Log.cc b/proxy/logging/Log.cc
index fe671d0..1a8d6bd 100644
--- a/proxy/logging/Log.cc
+++ b/proxy/logging/Log.cc
@@ -358,6 +358,21 @@ Log::init_fields()
   global_field_list.add(field, false);
   ink_hash_table_insert(field_symbol_hash, "chih", field);
 
+  field = NEW(new LogField("client_server_ip", "csi",
+                           LogField::IP,
+                           &LogAccess::marshal_client_server_ip,
+                           &LogAccess::unmarshal_ip_to_str));
+  global_field_list.add(field, false);
+  ink_hash_table_insert(field_symbol_hash, "csi", field);
+
+  field = NEW(new LogField("client_server_port", "csp",
+                           LogField::sINT,
+                           &LogAccess::marshal_client_server_port,
+                           &LogAccess::unmarshal_int_to_str));
+  global_field_list.add(field, false);
+  ink_hash_table_insert(field_symbol_hash, "csp", field);
+
+
   field = NEW (new LogField ("client_auth_user_name", "caun",
                              LogField::STRING,
                              &LogAccess::marshal_client_auth_user_name,
diff --git a/proxy/logging/LogAccess.cc b/proxy/logging/LogAccess.cc
index 9a14391..004dfc9 100644
--- a/proxy/logging/LogAccess.cc
+++ b/proxy/logging/LogAccess.cc
@@ -99,6 +99,24 @@ LogAccess::marshal_client_host_port(char *buf)
   -------------------------------------------------------------------------*/
 
 int
+LogAccess::marshal_client_server_ip(char *buf)
+{
+  DEFAULT_IP_FIELD;
+}
+
+/*-------------------------------------------------------------------------
+  -------------------------------------------------------------------------*/
+
+int
+LogAccess::marshal_client_server_port(char *buf)
+{
+  DEFAULT_INT_FIELD;
+}
+
+/*-------------------------------------------------------------------------
+  -------------------------------------------------------------------------*/
+
+int
 LogAccess::marshal_client_auth_user_name(char *buf)
 {
   DEFAULT_STR_FIELD;
diff --git a/proxy/logging/LogAccess.h b/proxy/logging/LogAccess.h
index 2ef5ca5..568f14f 100644
--- a/proxy/logging/LogAccess.h
+++ b/proxy/logging/LogAccess.h
@@ -169,6 +169,8 @@ public:
   //
   inkcoreapi virtual int marshal_client_host_ip(char *);        // STR
   inkcoreapi virtual int marshal_client_host_port(char *);      // INT
+  inkcoreapi virtual int marshal_client_server_ip(char *);        // STR
+  inkcoreapi virtual int marshal_client_server_port(char *);      // INT
   inkcoreapi virtual int marshal_client_auth_user_name(char *); // STR
   int marshal_client_req_timestamp_sec(char *); // INT
 
diff --git a/proxy/logging/LogAccessHttp.cc b/proxy/logging/LogAccessHttp.cc
index 8d82aab..9fd4370 100644
--- a/proxy/logging/LogAccessHttp.cc
+++ b/proxy/logging/LogAccessHttp.cc
@@ -167,6 +167,28 @@ LogAccessHttp::marshal_client_host_port(char *buf)
 }
 
 /*-------------------------------------------------------------------------
+  -------------------------------------------------------------------------*/
+
+int
+LogAccessHttp::marshal_client_server_ip(char *buf)
+{
+  return marshal_ip(buf, &m_http_sm->t_state.client_info.local_addr.sa);
+}
+
+/*-------------------------------------------------------------------------
+  -------------------------------------------------------------------------*/
+
+int
+LogAccessHttp::marshal_client_server_port(char *buf)
+{
+  if (buf) {
+    uint16_t port = 
ats_ip_port_host_order(&m_http_sm->t_state.client_info.local_addr.sa);
+    marshal_int(buf, port);
+  }
+  return INK_MIN_ALIGN;
+}
+
+/*-------------------------------------------------------------------------
   user authenticated to the proxy (RFC931)
   -------------------------------------------------------------------------*/
 
diff --git a/proxy/logging/LogAccessHttp.h b/proxy/logging/LogAccessHttp.h
index 133cd94..980c5c7 100644
--- a/proxy/logging/LogAccessHttp.h
+++ b/proxy/logging/LogAccessHttp.h
@@ -57,6 +57,8 @@ public:
   //
   virtual int marshal_client_host_ip(char *);   // STR
   virtual int marshal_client_host_port(char *); // INT
+  virtual int marshal_client_server_ip(char *);   // STR
+  virtual int marshal_client_server_port(char *); // INT
   virtual int marshal_client_auth_user_name(char *);    // STR
   virtual int marshal_client_protocol_stack(char *);    // INT
   virtual int marshal_client_req_text(char *);  // STR
-- 
1.9.1

Reply via email to