ip_address_decode (&mp->entry.tunnel_dst, &tun_dst);
if (mp->is_add)
- rv = ipsec_sa_add_and_lock (id, spi, proto,
- crypto_alg, &crypto_key,
- integ_alg, &integ_key, flags,
- 0, mp->entry.salt, &tun_src, &tun_dst,
- tunnel_flags,
- ip_dscp_decode (mp->entry.dscp),
- &sa_index,
- htons (mp->entry.udp_src_port),
- htons (mp->entry.udp_dst_port));
+ rv = ipsec_sa_add_and_lock (
+ id, spi, proto, crypto_alg, &crypto_key, integ_alg, &integ_key, flags,
+ htonl (mp->entry.tx_table_id), mp->entry.salt, &tun_src, &tun_dst,
+ tunnel_flags, ip_dscp_decode (mp->entry.dscp), &sa_index,
+ htons (mp->entry.udp_src_port), htons (mp->entry.udp_dst_port));
else
rv = ipsec_sa_unlock_id (id);
if (ipsec_sa_is_set_IS_TUNNEL (sa))
{
- tx_table_id = fib_table_get_table_id (sa->tx_fib_index,
- FIB_PROTOCOL_IP4);
+ tx_table_id = fib_table_get_table_id (
+ sa->tx_fib_index,
+ (ipsec_sa_is_set_IS_TUNNEL_V6 (sa) ? FIB_PROTOCOL_IP6 :
+ FIB_PROTOCOL_IP4));
s = format (s, "\n table-ID %d tunnel %U src %U dst %U flags %U",
tx_table_id,
format_ip_dscp, sa->dscp,