Implement raw socket mask handling on application layer.

This commit is contained in:
Vadim Vetrov 2024-07-22 00:14:11 +03:00
parent 3e44760a88
commit 5379c0c584
No known key found for this signature in database
GPG Key ID: E8A308689D7A73A5

View File

@ -199,9 +199,8 @@ static int fallback_accept_packet(uint32_t id) {
perror("mnl_socket_send");
return MNL_CB_ERROR;
}
return MNL_CB_OK;
return MNL_CB_OK;
}
#define TLS_CONTENT_TYPE_HANDSHAKE 0x16
@ -558,6 +557,7 @@ static int queue_cb(const struct nlmsghdr *nlh, void *data) {
perror("Metaheader not set");
return MNL_CB_ERROR;
}
ph = mnl_attr_get_payload(attr[NFQA_PACKET_HDR]);
@ -580,6 +580,14 @@ static int queue_cb(const struct nlmsghdr *nlh, void *data) {
return fallback_accept_packet(packet.id);
}
if (attr[NFQA_MARK] != NULL) {
// Skip packets sent by rawsocket to escape infinity loop.
if (ntohl(mnl_attr_get_u32(attr[NFQA_MARK])) ==
RAWSOCKET_MARK) {
return fallback_accept_packet(packet.id);
}
}
return process_packet(packet);
}