Skip to content

Commit

Permalink
CLEANUP: connection: using internal struct to hold source and dest port.
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
devnexen authored and wtarreau committed Jul 5, 2016
1 parent 90fd35c commit 3015a2e
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 5 deletions.
6 changes: 5 additions & 1 deletion include/types/connection.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@

#include <netinet/ip.h>
#include <netinet/ip6.h>
#include <netinet/tcp.h>

/* referenced below */
struct connection;
Expand Down Expand Up @@ -232,6 +231,11 @@ struct data_cb {
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.
*/
Expand Down
8 changes: 4 additions & 4 deletions src/connection.c
Original file line number Diff line number Diff line change
Expand Up @@ -713,7 +713,7 @@ int conn_recv_netscaler_cip(struct connection *conn, int flag)

if (ip_v == 4) {
struct ip *hdr_ip4;
struct tcphdr *hdr_tcp;
struct my_tcphdr *hdr_tcp;

hdr_ip4 = (struct ip *)line;

Expand All @@ -731,7 +731,7 @@ int conn_recv_netscaler_cip(struct connection *conn, int flag)
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;
Expand All @@ -746,7 +746,7 @@ int conn_recv_netscaler_cip(struct connection *conn, int flag)
}
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;

Expand All @@ -764,7 +764,7 @@ int conn_recv_netscaler_cip(struct connection *conn, int flag)
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;
Expand Down

0 comments on commit 3015a2e

Please sign in to comment.