colo: Consolidate the duplicate code chunk into a routine
Consolidate the code that extract the ip address(src,dst) and port number(src,dst) of the packet into a separate routine extract_ip_and_port() since the same chunk of code is called from two place. Cc: Zhang Chen <zhangckid@gmail.com> Cc: Li Zhijian <lizhijian@cn.fujitsu.com> Cc: Jason Wang <jasowang@redhat.com> Signed-off-by: Mao Zhongyi <maozy.fnst@cn.fujitsu.com> Signed-off-by: Jason Wang <jasowang@redhat.com>
This commit is contained in:
parent
3463218c6c
commit
8fa5ad6dfb
18
net/colo.c
18
net/colo.c
|
@ -82,6 +82,14 @@ int parse_packet_early(Packet *pkt)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void extract_ip_and_port(uint32_t tmp_ports, ConnectionKey *key, Packet *pkt)
|
||||||
|
{
|
||||||
|
key->src = pkt->ip->ip_src;
|
||||||
|
key->dst = pkt->ip->ip_dst;
|
||||||
|
key->src_port = ntohs(tmp_ports >> 16);
|
||||||
|
key->dst_port = ntohs(tmp_ports & 0xffff);
|
||||||
|
}
|
||||||
|
|
||||||
void fill_connection_key(Packet *pkt, ConnectionKey *key)
|
void fill_connection_key(Packet *pkt, ConnectionKey *key)
|
||||||
{
|
{
|
||||||
uint32_t tmp_ports;
|
uint32_t tmp_ports;
|
||||||
|
@ -97,17 +105,11 @@ void fill_connection_key(Packet *pkt, ConnectionKey *key)
|
||||||
case IPPROTO_SCTP:
|
case IPPROTO_SCTP:
|
||||||
case IPPROTO_UDPLITE:
|
case IPPROTO_UDPLITE:
|
||||||
tmp_ports = *(uint32_t *)(pkt->transport_header);
|
tmp_ports = *(uint32_t *)(pkt->transport_header);
|
||||||
key->src = pkt->ip->ip_src;
|
extract_ip_and_port(tmp_ports, key, pkt);
|
||||||
key->dst = pkt->ip->ip_dst;
|
|
||||||
key->src_port = ntohs(tmp_ports & 0xffff);
|
|
||||||
key->dst_port = ntohs(tmp_ports >> 16);
|
|
||||||
break;
|
break;
|
||||||
case IPPROTO_AH:
|
case IPPROTO_AH:
|
||||||
tmp_ports = *(uint32_t *)(pkt->transport_header + 4);
|
tmp_ports = *(uint32_t *)(pkt->transport_header + 4);
|
||||||
key->src = pkt->ip->ip_src;
|
extract_ip_and_port(tmp_ports, key, pkt);
|
||||||
key->dst = pkt->ip->ip_dst;
|
|
||||||
key->src_port = ntohs(tmp_ports & 0xffff);
|
|
||||||
key->dst_port = ntohs(tmp_ports >> 16);
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -76,6 +76,7 @@ typedef struct Connection {
|
||||||
uint32_t connection_key_hash(const void *opaque);
|
uint32_t connection_key_hash(const void *opaque);
|
||||||
int connection_key_equal(const void *opaque1, const void *opaque2);
|
int connection_key_equal(const void *opaque1, const void *opaque2);
|
||||||
int parse_packet_early(Packet *pkt);
|
int parse_packet_early(Packet *pkt);
|
||||||
|
void extract_ip_and_port(uint32_t tmp_ports, ConnectionKey *key, Packet *pkt);
|
||||||
void fill_connection_key(Packet *pkt, ConnectionKey *key);
|
void fill_connection_key(Packet *pkt, ConnectionKey *key);
|
||||||
void reverse_connection_key(ConnectionKey *key);
|
void reverse_connection_key(ConnectionKey *key);
|
||||||
Connection *connection_new(ConnectionKey *key);
|
Connection *connection_new(ConnectionKey *key);
|
||||||
|
|
Loading…
Reference in New Issue