factor out IPv4_enc_csum() for combined encode + csum

This commit is contained in:
Harald Welte 2017-07-07 19:56:34 +01:00
parent 9041b45139
commit eec898ab69
1 changed files with 12 additions and 7 deletions

View File

@ -171,10 +171,19 @@ module IPL4_example {
return data;
}
/* generate an IPv4 packet according to flowi + pkti */
function flow_gen_ipv4_pkt(flow_info flowi, pkt_info pkti) return octetstring {
/* Encode IPv4 packet + compute checksum */
function f_IPv4_enc_csum(IPv4_packet ip) return octetstring {
var octetstring data;
var OCT2 csum;
data := f_IPv4_enc(ip);
csum := f_IPv4_checksum(data);
data[10] := csum[0];
data[11] := csum[1];
return data;
}
/* generate an IPv4 packet according to flowi + pkti */
function flow_gen_ipv4_pkt(flow_info flowi, pkt_info pkti) return octetstring {
var charstring src_ip, dst_ip;
if (pkti.direction == DIR_ORIG) {
@ -192,11 +201,7 @@ module IPL4_example {
ext_headers := omit,
payload := flow_gen_l4_pkt(flowi, pkti)
}
data := f_IPv4_enc(ip);
csum := f_IPv4_checksum(data);
data[10] := csum[0];
data[11] := csum[1];
return data;
return f_IPv4_enc_csum(ip);
}
/* generate an IPv6 packet according to flowi + pkti */