bgpd: flush remaining entry if bgp_pbr_match is equal

When adding an entry, a check is done in order to flush previously
configured entries. The whole parameters are checked so as to not remove
some entries that have ipset entries equal, but not iptable settings.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
This commit is contained in:
Philippe Guibert 2018-07-02 16:50:36 +02:00
parent 9717d3e5b8
commit 836b6953b4

View File

@ -1285,7 +1285,13 @@ static int bgp_pbr_get_remaining_entry(struct hash_backet *backet, void *arg)
bpm_temp = bpme->backpointer;
if (bpm_temp->vrf_id != bpm->vrf_id ||
bpm_temp->type != bpm->type ||
bpm_temp->flags != bpm->flags)
bpm_temp->flags != bpm->flags ||
bpm_temp->tcp_flags != bpm->tcp_flags ||
bpm_temp->tcp_mask_flags != bpm->tcp_mask_flags ||
bpm_temp->pkt_len_min != bpm->pkt_len_min ||
bpm_temp->pkt_len_max != bpm->pkt_len_max ||
bpm_temp->dscp_value != bpm->dscp_value ||
bpm_temp->fragment != bpm->fragment)
return HASHWALK_CONTINUE;
/* look for remaining bpme */