CLEANUP: connection: using internal struct to hold source and dest port.
Originally, tcphdr's source and dest from Linux were used to get the
source and port which led to a build issue on BSD oses.
To avoid side problems related to network then we just use an internal
struct as we need only those two fields.
diff --git a/include/types/connection.h b/include/types/connection.h
index 292ca2b..2d10704 100644
--- a/include/types/connection.h
+++ b/include/types/connection.h
@@ -34,7 +34,6 @@
#include <netinet/ip.h>
#include <netinet/ip6.h>
-#include <netinet/tcp.h>
/* referenced below */
struct connection;
@@ -232,6 +231,11 @@
int (*init)(struct connection *conn); /* data-layer initialization */
};
+struct my_tcphdr {
+ u_int16_t source;
+ u_int16_t dest;
+};
+
/* a connection source profile defines all the parameters needed to properly
* bind an outgoing connection for a server or proxy.
*/
diff --git a/src/connection.c b/src/connection.c
index 358c9bc..7a9f391 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -713,7 +713,7 @@
if (ip_v == 4) {
struct ip *hdr_ip4;
- struct tcphdr *hdr_tcp;
+ struct my_tcphdr *hdr_tcp;
hdr_ip4 = (struct ip *)line;
@@ -731,7 +731,7 @@
goto missing;
}
- hdr_tcp = (struct tcphdr *)(line + (hdr_ip4->ip_hl * 4));
+ hdr_tcp = (struct my_tcphdr *)(line + (hdr_ip4->ip_hl * 4));
/* update the session's addresses and mark them set */
((struct sockaddr_in *)&conn->addr.from)->sin_family = AF_INET;
@@ -746,7 +746,7 @@
}
else if (ip_v == 6) {
struct ip6_hdr *hdr_ip6;
- struct tcphdr *hdr_tcp;
+ struct my_tcphdr *hdr_tcp;
hdr_ip6 = (struct ip6_hdr *)line;
@@ -764,7 +764,7 @@
goto missing;
}
- hdr_tcp = (struct tcphdr *)(line + sizeof(struct ip6_hdr));
+ hdr_tcp = (struct my_tcphdr *)(line + sizeof(struct ip6_hdr));
/* update the session's addresses and mark them set */
((struct sockaddr_in6 *)&conn->addr.from)->sin6_family = AF_INET6;