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