aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorToni Uhlig <matzeton@googlemail.com>2020-05-27 20:53:13 +0200
committerToni Uhlig <matzeton@googlemail.com>2020-05-27 20:53:13 +0200
commit011c923648a6998b483a3d5ee8f462fe7100b6a7 (patch)
treee8532bff322a6aed3d94a87284f5aa6e18f5d6b3
parentd2e92ee748f3b3e826ffcbf665adc45637ad9045 (diff)
re-enabled and improved logging of packet headers and payload (SEND)
Signed-off-by: Toni Uhlig <matzeton@googlemail.com>
-rw-r--r--src/pdesc.c8
-rw-r--r--src/pdesc.h2
-rw-r--r--src/pkt.c7
3 files changed, 11 insertions, 6 deletions
diff --git a/src/pdesc.c b/src/pdesc.c
index 90a8a2e..78bf1cd 100644
--- a/src/pdesc.c
+++ b/src/pdesc.c
@@ -60,7 +60,7 @@
proxy_desc_t *create_and_insert_proxy_desc(uint16_t id_no, uint16_t icmp_id,
int sock, struct sockaddr_in *addr,
uint32_t dst_ip, uint32_t dst_port,
- uint32_t init_state, uint32_t type) {
+ uint32_t init_state, enum pkt_flag type) {
proxy_desc_t *cur;
pthread_mutex_lock(&chain_lock);
@@ -243,6 +243,12 @@ int queue_packet(int sock_fd, proxy_desc_t *cur, char *buf, size_t bufsiz,
cur->my_seq, state_name[state & (~kFlag_mask)],
ack_val, cur->pkt_type,
((state & kUser_flag) == kUser_flag ? "yes" : "no"));
+ log_sendrecv_hexstr("SEND ICMP", pkt, sizeof(*pkt));
+ log_sendrecv_hexstr("SEND PTNG", pt_pkt, sizeof(*pt_pkt));
+ if (pkt_len - (pt_pkt->data - (char *)pkt) > 0) {
+ log_sendrecv_hexstr("SEND PAYL", pt_pkt->data, pkt_len - (pt_pkt->data - (char *)pkt));
+ }
+
err = sendto(sock_fd, (const void*)pkt, pkt_len, 0,
(struct sockaddr*)&cur->dest_addr, sizeof(struct sockaddr));
if (err < 0) {
diff --git a/src/pdesc.h b/src/pdesc.h
index f8b06e6..62740df 100644
--- a/src/pdesc.h
+++ b/src/pdesc.h
@@ -172,7 +172,7 @@ proxy_desc_t * create_and_insert_proxy_desc(uint16_t id_no,
uint32_t dst_ip,
uint32_t dst_port,
uint32_t init_state,
- uint32_t type);
+ enum pkt_flag type);
void remove_proxy_desc(proxy_desc_t * cur, proxy_desc_t * prev);
diff --git a/src/pkt.c b/src/pkt.c
index cae71de..90ae7da 100644
--- a/src/pkt.c
+++ b/src/pkt.c
@@ -237,7 +237,7 @@ void handle_packet(char * buf, unsigned bytes, int is_pcap, struct sockaddr_in *
}
if (opts.udp || opts.unprivileged) {
- ip_pkt = 0;
+ ip_pkt = NULL;
pkt = (icmp_echo_packet_t *)buf;
pt_pkt = (ping_tunnel_pkt_t *)pkt->data;
} else {
@@ -297,9 +297,8 @@ void handle_packet(char * buf, unsigned bytes, int is_pcap, struct sockaddr_in *
is_pcap);
log_sendrecv_hexstr("RECV ICMP", pkt, sizeof(*pkt));
log_sendrecv_hexstr("RECV PTNG", pt_pkt, sizeof(*pt_pkt));
- if (bytes > sizeof(icmp_echo_packet_t) + sizeof(ping_tunnel_pkt_t)) {
- log_sendrecv_hexstr("RECV PAYL", buf + sizeof(icmp_echo_packet_t) + sizeof(ping_tunnel_pkt_t),
- bytes - sizeof(icmp_echo_packet_t) - sizeof(ping_tunnel_pkt_t));
+ if (bytes - (pt_pkt->data - buf) > 0) {
+ log_sendrecv_hexstr("RECV PAYL", pt_pkt->data, bytes - (pt_pkt->data - buf));
}
/* This test essentially verifies that the packet comes from someone who isn't us. */