diff options
author | Florin Coras <fcoras@cisco.com> | 2016-05-02 18:26:26 +0200 |
---|---|---|
committer | Damjan Marion <damarion@cisco.com> | 2016-05-02 22:04:00 +0000 |
commit | c7e91e44518e708ea70b37f11d65428b38640edf (patch) | |
tree | e1ea3facc24e29b692e8e562e332d9a046a8d63d /vnet/vnet/lisp-gpe/lisp_gpe.c | |
parent | 633134b78afc8e343ae1eb4a62b668dd6bd31164 (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.c | 15 |
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; } |