Skip to content

Commit 55d504b

Browse files
tmp: Ensure packet order
1 parent 3d7b5ce commit 55d504b

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

src/nfqueue.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,8 @@ static int callback(struct nfq_q_handle *qh, struct nfgenmsg *nfmsg,
102102
if (res < 0) {
103103
EE(T(fh_rawsend_handle));
104104
goto ret_accept;
105+
} else if (res == 100) {
106+
return nfq_set_verdict(qh, pkt_id, NF_DROP, pkt_len, pkt_data);
105107
}
106108

107109
if (modified) {

src/rawsend.c

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,7 @@ int fh_rawsend_handle(struct sockaddr_ll *sll, uint8_t *pkt_data, int pkt_len,
258258
char src_ip[INET6_ADDRSTRLEN], dst_ip[INET6_ADDRSTRLEN];
259259
struct sockaddr_storage saddr_store, daddr_store;
260260
struct sockaddr *saddr, *daddr;
261+
ssize_t nbytes;
261262

262263
*modified = 0;
263264

@@ -378,7 +379,14 @@ int fh_rawsend_handle(struct sockaddr_ll *sll, uint8_t *pkt_data, int pkt_len,
378379
E_INFO("%s:%u <===FAKE(*)=== %s:%u", dst_ip, ntohs(tcph->dest), src_ip,
379380
ntohs(tcph->source));
380381

381-
return 0;
382+
nbytes = sendto(sockfd, pkt_data, pkt_len, 0, (struct sockaddr *) sll,
383+
sizeof(*sll));
384+
if (nbytes < 0) {
385+
E("ERROR: sendto(): %s", strerror(errno));
386+
return -1;
387+
}
388+
389+
return 100;
382390
} else if (sll->sll_pkttype == PACKET_HOST && tcph->syn) {
383391
if (!g_ctx.inbound) {
384392
E_INFO("%s:%u ===SYN(?)===> %s:%u", src_ip, ntohs(tcph->source),

0 commit comments

Comments
 (0)