On Sun, 10 Jun 2018, D. Hugh Redelmeier wrote:

(1) it isn't clear to me why the streq(best->name, t->name) is not negated

Could someone add a comment expaining this?  Paul?  Antony?

929     if (LIN(POLICY_GROUPINSTANCE, t->policy) && (t->kind == CK_TEMPLATE)) {
930             /* ??? clang 6.0.0 thinks best might be NULL but I don't see 
how */
931             if (!streq(t->foodgroup, best->foodgroup) ||
932                 streq(best->name, t->name) ||
933                 !subnetinsubnet(&best->spd.that.client, 
&t->spd.that.client) ||
934                 !sameaddr(&best->spd.this.client.addr, 
&t->spd.this.client.addr))
935                     continue;
936
937             /* ??? why require best->name and t->name to be different */

You can find the explanation in the commit:

    IKEv2: Allow switching between OE group instances with different protoport 
settings

    This fixes newoe-18-poc-cop-port22-both-reorder

From that's description.txt:

        Compared to newoe-18-poc-cop-port22-both, the order of the 
clear-or-private
        policies on east is reversed. This causes east to initiately pick the
        wrong clear-or-private group to instantiate, and it needs to switch
        during IKE_AUTH

The test is there to ensure if we find the _same_ conn, we do NOT select
it, but "continue" looking for something better that our current
instance or its template.

(2) the comment in the following code explains what I don't understand.
Can someone explain why we can assume that tsi_n and tsr_n are both one?

We simply haven't written the code to handle more than one.

Paul
_______________________________________________
Swan-dev mailing list
[email protected]
https://lists.libreswan.org/mailman/listinfo/swan-dev

Reply via email to