updown: Pass interface ID to updown script
authorTobias Brunner <tobias@strongswan.org>
Tue, 12 Feb 2019 11:11:10 +0000 (12:11 +0100)
committerTobias Brunner <tobias@strongswan.org>
Thu, 4 Apr 2019 07:31:38 +0000 (09:31 +0200)
src/_updown/_updown.in
src/libcharon/plugins/updown/updown_listener.c

index 5f70963..d8d7110 100644 (file)
 #       PLUTO_MARK_OUT
 #              is an optional XFRM mark set on the outbound IPsec SA
 #
+#       PLUTO_IF_ID_IN
+#              is an optional XFRM interface ID set on the inbound IPsec SA
+#
+#       PLUTO_IF_ID_OUT
+#              is an optional XFRM interface ID set on the outbound IPsec SA
+#
 #       PLUTO_UDP_ENC
 #              contains the remote UDP port in the case of ESP_IN_UDP
 #              encapsulation
index bbefd6a..95d5cde 100644 (file)
@@ -258,6 +258,7 @@ static void invoke_once(private_updown_listener_t *this, ike_sa_t *ike_sa,
        host_t *me, *other, *host;
        char *iface;
        uint8_t mask;
+       uint32_t if_id;
        mark_t mark;
        bool is_host, is_ipv6;
        int out;
@@ -356,6 +357,16 @@ static void invoke_once(private_updown_listener_t *this, ike_sa_t *ike_sa,
                push_env(envp, countof(envp), "PLUTO_MARK_OUT=%u/0x%08x",
                                 mark.value, mark.mask);
        }
+       if_id = child_sa->get_if_id(child_sa, TRUE);
+       if (if_id)
+       {
+               push_env(envp, countof(envp), "PLUTO_IF_ID_IN=%u", if_id);
+       }
+       if_id = child_sa->get_if_id(child_sa, FALSE);
+       if (if_id)
+       {
+               push_env(envp, countof(envp), "PLUTO_IF_ID_OUT=%u", if_id);
+       }
        if (ike_sa->has_condition(ike_sa, COND_NAT_ANY))
        {
                push_env(envp, countof(envp), "PLUTO_UDP_ENC=%u",