[Swan-commit] Changes to ref refs/heads/main

Andrew Cagney cagney at vault.libreswan.fi
Sat Sep 2 16:07:28 EEST 2023


New commits:
commit ed91be1ba97e982b0ae6e0e2e8987448c6336a08
Merge: 531b917c77 85989a3e4e
Author: Andrew Cagney <cagney at gnu.org>
Date:   Fri Sep 1 21:20:34 2023 -0400

    conections: refcnt the state's .st_connection
    
    Merge remote-tracking branch 'github/connection-refcnt'

commit 85989a3e4ed81bd97e9f10d4dc7b513dfa4ca3d4
Author: Andrew Cagney <cagney at gnu.org>
Date:   Sat Aug 26 18:32:46 2023 -0400

    routing: update transitions

commit ae67fbf304fc8f22e1b0bc25283dd6a31f6952fd
Author: Andrew Cagney <cagney at gnu.org>
Date:   Fri Aug 25 22:36:19 2023 -0400

    connections: when establishing, addref/delref when zapping old states
    
    For instance, in install_inbound_ipsec_sa() and ISAKMP_SA_established().
    The code looks like:
    
        addref()
        strip states
        if instance
            unroute
        delref
    
    This is a hack on a hack:
    
    - the unroute() is a hack to get around teardown_ipsec_kernel_policies()
      leaving connections ROUTED_ONDEMAND
    
      the code should just call connection_unroute() but, currently,
      for historic reasons, directly unrouting an established tunnel
      isn't allowed
    
    - the addref/delref is to stop the connection disappearing
      before the unroute call happens

commit f4aa064074374c9f672f4d374fc024cefee5db14
Author: Andrew Cagney <cagney at gnu.org>
Date:   Wed Aug 23 18:17:26 2023 -0400

    connections: when deleting states grab a connection reference
    
    the model here is:
    
        stack_connection = addref(st->st_connection)
        strip connection of states et.al.
        delref(stack_connection)
    
    for a permanent connection the addref/delref are no-ops, but
    for unused instances, these stop the connection being deleted
    
    Note that there's still some curly code doing stuff like:
       co = st->connection->serialno
       strip connection of states
       cc = find_connection(co)
    that still lurkes in the code base.

commit 5835f03b8a70204910a6442fb67c091f8ef521f2
Author: Andrew Cagney <cagney at gnu.org>
Date:   Tue Aug 22 09:49:20 2023 -0400

    connections: addref/delref when initiating connections
    
    the model here is:
    
       connection = find_and_newref_connection_to_initiate()
       initiate connection; which takes a reference
       delref(connection)
    
    where find_and_newref_connection_to_initiate()
    
    - addref's permanent connections
    - instantiates template connections
    
    With IKEv2 the nested initiate functions follow the model closely
    IKEv1 is a bit tangled.
    
    Note that in addition to the initiate code, this also happens when
    instantiating connections when finding a better connection.
    
    The only got-ya is labeled-templates.  Because the labeled-parent
    is permanent like it's reference isn't released.

commit dd3319a8a97618c81d2fdf1330e78786e598a2f8
Author: Andrew Cagney <cagney at gnu.org>
Date:   Wed Aug 23 18:37:55 2023 -0400

    routing: drop connection_has_interlopers hack

commit cd207d98e0b0bb97ef2d7b5c71546115abff0748
Author: Andrew Cagney <cagney at gnu.org>
Date:   Fri Aug 25 16:22:07 2023 -0400

    connections: make st_connection_delref() a no-op

commit 6c2ad7ddf560669e65631bb92b51c4fb8986a741
Author: Andrew Cagney <cagney at gnu.org>
Date:   Tue Aug 22 07:10:44 2023 -0400

    state: refcnt .st_connection



More information about the Swan-commit mailing list