aboutsummaryrefslogtreecommitdiffstats
path: root/vnet/vnet/lisp-gpe/lisp_gpe.c
diff options
context:
space:
mode:
authorFlorin Coras <fcoras@cisco.com>2016-05-02 18:26:26 +0200
committerDamjan Marion <damarion@cisco.com>2016-05-02 22:04:00 +0000
commitc7e91e44518e708ea70b37f11d65428b38640edf (patch)
treee1ea3facc24e29b692e8e562e332d9a046a8d63d /vnet/vnet/lisp-gpe/lisp_gpe.c
parent633134b78afc8e343ae1eb4a62b668dd6bd31164 (diff)
Small fixes to lisp-gpe header and decap
- enforce lisp-gpe router mode (set P bit) - fix selection of ip6 decap node - fix dual-dual lool error index init Change-Id: I1a9623c0eb7e81a2cfb60efaa88dc44ee65e664d Signed-off-by: Florin Coras <fcoras@cisco.com>
Diffstat (limited to 'vnet/vnet/lisp-gpe/lisp_gpe.c')
-rw-r--r--vnet/vnet/lisp-gpe/lisp_gpe.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/vnet/vnet/lisp-gpe/lisp_gpe.c b/vnet/vnet/lisp-gpe/lisp_gpe.c
index 76a7fa25e9f..6ccc5f0d32e 100644
--- a/vnet/vnet/lisp-gpe/lisp_gpe.c
+++ b/vnet/vnet/lisp-gpe/lisp_gpe.c
@@ -227,19 +227,24 @@ vnet_lisp_gpe_add_del_fwd_entry (vnet_lisp_gpe_add_del_fwd_entry_args_t * a,
ip_prefix_t * dpref, * spref;
uword * lookup_next_index, * lgpe_sw_if_index, * lnip;
u8 ip_ver;
+
/* treat negative fwd entries separately */
if (a->is_negative)
return add_del_negative_fwd_entry (lgm, a);
+ dpref = &gid_address_ippref(&a->deid);
+ spref = &gid_address_ippref(&a->seid);
+ ip_ver = ip_prefix_version(dpref);
+
+ a->next_protocol = ip_ver == IP4 ?
+ LISP_GPE_NEXT_PROTO_IP4 : LISP_GPE_NEXT_PROTO_IP6;
+ a->flags |= LISP_GPE_FLAGS_P;
+
/* add/del tunnel to tunnels pool and prepares rewrite */
rv = add_del_tunnel (a, &tun_index);
if (rv)
return rv;
- dpref = &gid_address_ippref(&a->deid);
- spref = &gid_address_ippref(&a->seid);
- ip_ver = ip_prefix_version(dpref);
-
/* setup adjacency for eid */
memset (&adj, 0, sizeof(adj));
adj.n_adj = 1;
@@ -570,7 +575,7 @@ lisp_gpe_init (vlib_main_t *vm)
udp_register_dst_port (vm, UDP_DST_PORT_lisp_gpe,
lisp_gpe_ip4_input_node.index, 1 /* is_ip4 */);
udp_register_dst_port (vm, UDP_DST_PORT_lisp_gpe6,
- lisp_gpe_ip4_input_node.index, 0 /* is_ip4 */);
+ lisp_gpe_ip6_input_node.index, 0 /* is_ip4 */);
return 0;
}