예제 #1
0
std::string packetToString(const NetherPacket &packet)
{
	std::stringstream stream;
	stream << "ID=";
	stream << packet.id;
	stream << " SECCTX=";
	stream << packet.securityContext;
	stream << " OUTDEV=";
	stream << packet.outdevName;
	stream << " UID=";
	stream << packet.uid;
	stream << " GID=";
	stream << packet.gid;
	stream << " PROTO=";
	stream << protocolToString(packet.protocolType);
	stream << " TRANSPORT=";
	stream << transportToString(packet.transportType);
	stream << " SADDR=";
	stream << ipAddressToString(&packet.localAddress[0], packet.protocolType);
	stream << ":";
	stream << packet.localPort;
	stream << " DADDR=";
	stream << ipAddressToString(&packet.remoteAddress[0], packet.protocolType);
	stream << ":";
	stream << packet.remotePort;
	return (stream.str());
}
예제 #2
0
static void writeTraceRecord(int fd,
                             bool isRead,
                             const uint8_t *contents,
                             uint16_t length,
                             struct sockaddr *remoteAddress)
{
  FdTrace *fdTrace = findFdTrace(fd);
  if (fdTrace != NULL
      && traceFile != NULL) {
    uint16_t i;
    char addressString[100] = {0};
    char realAddress[16] = {0};

    if (remoteAddress != NULL) {
      memcpy(realAddress,
             ((struct sockaddr_in6 *) remoteAddress)->sin6_addr.s6_addr,
             16);
    }

    // i don't like having an #ifdef here, but it's easier than
    // pulling in ip-address.c to the tls and pana tests
#ifdef UNIX_SCRIPTED_HOST
    ipAddressToString(realAddress,
                      addressString,
                      sizeof(addressString));
#else
    strcpy(addressString, "0000:0000:0000:0000:0000:0000:0000:0000");
#endif

    fprintf(traceFile, "%c %u %s %d",
            (isRead
             ? fdTrace->readTag
             : fdTrace->writeTag),
            fdTrace->port,
            addressString,
            length);
    for (i = 0; i < length; i++) {
      fprintf(traceFile, "%s%02X",
              (i % 16 == 0
               ? "\n"
               : " "),
              contents[i]);
    }
    fprintf(traceFile, "\n");
    fflush(traceFile);
  }
}