Commit 8fa5ad6d authored by Mao Zhongyi's avatar Mao Zhongyi Committed by Jason Wang
Browse files

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: default avatarMao Zhongyi <maozy.fnst@cn.fujitsu.com>
Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
parent 3463218c
Loading
Loading
Loading
Loading
+10 −8
Original line number Diff line number Diff line
@@ -82,6 +82,14 @@ int parse_packet_early(Packet *pkt)
    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)
{
    uint32_t tmp_ports;
@@ -97,17 +105,11 @@ void fill_connection_key(Packet *pkt, ConnectionKey *key)
    case IPPROTO_SCTP:
    case IPPROTO_UDPLITE:
        tmp_ports = *(uint32_t *)(pkt->transport_header);
        key->src = pkt->ip->ip_src;
        key->dst = pkt->ip->ip_dst;
        key->src_port = ntohs(tmp_ports & 0xffff);
        key->dst_port = ntohs(tmp_ports >> 16);
        extract_ip_and_port(tmp_ports, key, pkt);
        break;
    case IPPROTO_AH:
        tmp_ports = *(uint32_t *)(pkt->transport_header + 4);
        key->src = pkt->ip->ip_src;
        key->dst = pkt->ip->ip_dst;
        key->src_port = ntohs(tmp_ports & 0xffff);
        key->dst_port = ntohs(tmp_ports >> 16);
        extract_ip_and_port(tmp_ports, key, pkt);
        break;
    default:
        break;
+1 −0
Original line number Diff line number Diff line
@@ -76,6 +76,7 @@ typedef struct Connection {
uint32_t connection_key_hash(const void *opaque);
int connection_key_equal(const void *opaque1, const void *opaque2);
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 reverse_connection_key(ConnectionKey *key);
Connection *connection_new(ConnectionKey *key);