You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by zw...@apache.org on 2011/10/18 17:19:09 UTC

svn commit: r1185716 - in /trafficserver/traffic/trunk/lib: tsconfig/BisonHeaderToC++.sed tsconfig/Makefile.am wccp/WccpEndPoint.cc wccp/WccpStatic.cc

Author: zwoop
Date: Tue Oct 18 15:19:09 2011
New Revision: 1185716

URL: http://svn.apache.org/viewvc?rev=1185716&view=rev
Log:
TS-928 More compile problem in WCCP on FreeBSD 8. Review/improvements: amc.

Modified:
    trafficserver/traffic/trunk/lib/tsconfig/BisonHeaderToC++.sed
    trafficserver/traffic/trunk/lib/tsconfig/Makefile.am
    trafficserver/traffic/trunk/lib/wccp/WccpEndPoint.cc
    trafficserver/traffic/trunk/lib/wccp/WccpStatic.cc

Modified: trafficserver/traffic/trunk/lib/tsconfig/BisonHeaderToC++.sed
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/lib/tsconfig/BisonHeaderToC%2B%2B.sed?rev=1185716&r1=1185715&r2=1185716&view=diff
==============================================================================
--- trafficserver/traffic/trunk/lib/tsconfig/BisonHeaderToC++.sed (original)
+++ trafficserver/traffic/trunk/lib/tsconfig/BisonHeaderToC++.sed Tue Oct 18 15:19:09 2011
@@ -1,4 +1,5 @@
-1anamespace ts { namespace config {\
+1a\
+namespace ts { namespace config {\
   enum TokenType {
 1,/^  *enum/d
 /^  *};/a\

Modified: trafficserver/traffic/trunk/lib/tsconfig/Makefile.am
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/lib/tsconfig/Makefile.am?rev=1185716&r1=1185715&r2=1185716&view=diff
==============================================================================
--- trafficserver/traffic/trunk/lib/tsconfig/Makefile.am (original)
+++ trafficserver/traffic/trunk/lib/tsconfig/Makefile.am Tue Oct 18 15:19:09 2011
@@ -51,5 +51,5 @@ test_tsconfig_LDADD = libtsconfig.la
 
 # Strip to just the enum in the ts::config namespace so we can use
 # it more easily in C++.
-TsConfigGrammar.hpp: TsConfigGrammar.h
-	$(SED) -f BisonHeaderToC++.sed $< > $@
\ No newline at end of file
+TsConfigGrammar.hpp: TsConfigGrammar.h BisonHeaderToC++.sed
+	$(SED) -f BisonHeaderToC++.sed TsConfigGrammar.h > $@

Modified: trafficserver/traffic/trunk/lib/wccp/WccpEndPoint.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/lib/wccp/WccpEndPoint.cc?rev=1185716&r1=1185715&r2=1185716&view=diff
==============================================================================
--- trafficserver/traffic/trunk/lib/wccp/WccpEndPoint.cc (original)
+++ trafficserver/traffic/trunk/lib/wccp/WccpEndPoint.cc Tue Oct 18 15:19:09 2011
@@ -26,6 +26,19 @@
 # include "ink_string.h"
 // ------------------------------------------------------
 namespace wccp {
+
+#if defined IP_RECVDSTADDR
+# define DSTADDR_SOCKOPT IP_RECVDSTADDR
+# define DSTADDR_DATASIZE (CMSG_SPACE(sizeof(struct in_addr)))
+# define dstaddr(x) (CMSG_DATA(x))
+#elif defined IP_PKTINFO
+# define DSTADDR_SOCKOPT IP_PKTINFO
+# define DSTADDR_DATASIZE (CMSG_SPACE(sizeof(struct in_pktinfo)))
+# define dstaddr(x) (&(((struct in_pktinfo *)(CMSG_DATA(x)))->ipi_addr))
+#else
+# error "can't determine socket option"
+#endif 
+
 // ------------------------------------------------------
 Impl::GroupData::GroupData()
   : m_generation(0)
@@ -96,7 +109,7 @@ Impl::open(uint addr) {
 
   // Enable retrieval of destination address on packets.
   int ip_pktinfo_flag = 1;
-  if (-1 == setsockopt(fd, IPPROTO_IP, IP_PKTINFO, &ip_pktinfo_flag, sizeof(ip_pktinfo_flag))) {
+  if (-1 == setsockopt(fd, IPPROTO_IP, DSTADDR_SOCKOPT, &ip_pktinfo_flag, sizeof(ip_pktinfo_flag))) {
     log_errno(LVL_FATAL, "Failed to enable destination address retrieval");
     this->close();
     return -errno;
@@ -172,7 +185,7 @@ Impl::handleMessage() {
   IpHeader ip_header;
   static ssize_t const BUFFER_SIZE = 65536;
   char buffer[BUFFER_SIZE];
-  static size_t const ANC_BUFFER_SIZE = CMSG_ALIGN(CMSG_SPACE(sizeof(in_pktinfo)));
+  static size_t const ANC_BUFFER_SIZE = DSTADDR_DATASIZE;
   char anc_buffer[ANC_BUFFER_SIZE];
 
   if (ts::NO_FD == m_fd) return -ENOTCONN;
@@ -197,8 +210,8 @@ Impl::handleMessage() {
         anc;
         anc = CMSG_NXTHDR(&recv_hdr, anc)
   ) {
-    if (anc->cmsg_level == IPPROTO_IP && anc->cmsg_type == IP_PKTINFO) {
-      ip_header.m_dst = access_field(&in_pktinfo::ipi_addr, CMSG_DATA(anc)).s_addr;
+    if (anc->cmsg_level == IPPROTO_IP && anc->cmsg_type == DSTADDR_SOCKOPT) {
+      ip_header.m_dst = ((struct in_addr*)dstaddr(anc))->s_addr;
       break;
     }
   }

Modified: trafficserver/traffic/trunk/lib/wccp/WccpStatic.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/lib/wccp/WccpStatic.cc?rev=1185716&r1=1185715&r2=1185716&view=diff
==============================================================================
--- trafficserver/traffic/trunk/lib/wccp/WccpStatic.cc (original)
+++ trafficserver/traffic/trunk/lib/wccp/WccpStatic.cc Tue Oct 18 15:19:09 2011
@@ -23,6 +23,7 @@
 # include "WccpLocal.h"
 # include "WccpMeta.h"
 # include <sys/ioctl.h>
+# include <sys/socket.h>
 # include <net/if.h>
 # include <stdarg.h>
 # include <errno.h>
@@ -160,8 +161,10 @@ vlogf_errno(ts::Errata::Code code, char 
   char t_buffer[T_SIZE];
   
   n = vsnprintf(t_buffer, T_SIZE, format, rest);
-  if (0 <= n && n < T_SIZE) // still have room.
-    n += snprintf(t_buffer + n, T_SIZE - n, "[%d] %s", e, strerror_r(e, e_buffer, E_SIZE));
+  if (0 <= n && n < T_SIZE) { // still have room.
+    strerror_r(e, e_buffer, E_SIZE);
+    n += snprintf(t_buffer + n, T_SIZE - n, "[%d] %s", e, e_buffer);
+  }
   err.push(ts::Errata::Id(0), code, t_buffer);
   return err;
 }