Skip to content

Commit 126e080

Browse files
committed
Fixed ip options in Pbforwarder and solved temporary directory in packetcapture service
1 parent 5294fb6 commit 126e080

2 files changed

Lines changed: 7 additions & 5 deletions

File tree

src/services/pcn-packetcapture/src/Packetcapture.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,12 +131,13 @@ void Packetcapture::writeDump(const std::vector<uint8_t> &packet){
131131
if (folder == 0){
132132
folder = getenv("TEMPDIR");
133133
if (folder == 0){
134-
folder = "/tmp/";
134+
folder = "/tmp";
135135
}
136136
}
137137
}
138138
}
139139
temp_folder = std::string(folder);
140+
temp_folder.append("/");
140141
random_number = std::to_string(rand()%1000); //to avoid two files that using the same name
141142
}
142143

src/services/pcn-pbforwarder/src/Pbforwarder_dp_parsing.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,16 +90,17 @@ static __always_inline int handle_rx(struct CTXTYPE *ctx,
9090
pkt->srcIp = ip->saddr;
9191
pkt->dstIp = ip->daddr;
9292
#if LEVEL == 4
93+
uint8_t header_len = 4 * ip->ihl;
9394
if (ip->protocol == IPPROTO_TCP) {
94-
tcp = data + sizeof(*ethernet) + sizeof(*ip);
95-
if (data + sizeof(*ethernet) + sizeof(*ip) + sizeof(*tcp) > data_end)
95+
tcp = data + sizeof(*ethernet) + header_len;
96+
if (data + sizeof(*ethernet) + header_len + sizeof(*tcp) > data_end)
9697
return RX_DROP;
9798
pkt->l4proto = IPPROTO_TCP;
9899
pkt->srcPort = tcp->source;
99100
pkt->dstPort = tcp->dest;
100101
} else if (ip->protocol == IPPROTO_UDP) {
101-
udp = data + sizeof(*ethernet) + sizeof(*ip);
102-
if (data + sizeof(*ethernet) + sizeof(*ip) + sizeof(*udp) > data_end)
102+
udp = data + sizeof(*ethernet) + header_len;
103+
if (data + sizeof(*ethernet) + header_len + sizeof(*udp) > data_end)
103104
return RX_DROP;
104105
pkt->l4proto = IPPROTO_UDP;
105106
pkt->srcPort = udp->source;

0 commit comments

Comments
 (0)