Diff for /fwsync/patches/alias_db.patch between versions 1.1 and 1.6

version 1.1, 2022/06/22 13:01:55 version 1.6, 2022/08/23 14:27:13
Line 1 Line 1
 diff --git a/sys/netinet/libalias/alias_db.c b/sys/netinet/libalias/alias_db.c  diff --git a/sys/netinet/libalias/alias_db.c b/sys/netinet/libalias/alias_db.c
index 1f85a606b2d..82caa0a2218 100644index 4612b32c139..7ef0282fdb8 100644
 --- a/sys/netinet/libalias/alias_db.c  --- a/sys/netinet/libalias/alias_db.c
 +++ b/sys/netinet/libalias/alias_db.c  +++ b/sys/netinet/libalias/alias_db.c
@@ -1054,6 +1054,11 @@ AddLink(struct libalias *la, struct in_addr src_addr, struct in_addr dst_addr,@@ -55,6 +55,7 @@ __FBSDID("$FreeBSD$");
        if (la->packetAliasMode & PKT_ALIAS_LOG) { #include <netinet/libalias/alias_local.h>
                ShowAliasStats(la); #include <netinet/libalias/alias_mod.h>
        } #include <net/if.h>
 +#include <net/vnet.h>
  #else
  #include "alias.h"
  #include "alias_local.h"
 @@ -63,6 +64,23 @@ __FBSDID("$FreeBSD$");
  
  #include "alias_db.h"
  
 +#ifdef _KERNEL
 +#ifndef V_hook_alias
 +typedef int (*ipfw_hook_t)(const void *arg, const void *extdata);
 +/* callback hooks for notify on update of internal states and aliases */
 +VNET_DECLARE(ipfw_hook_t, hook_state);
 +#define V_hook_state           VNET(hook_state)
 +VNET_DECLARE(ipfw_hook_t, hook_alias);
 +#define V_hook_alias           VNET(hook_alias)
 +VNET_DECLARE(ipfw_hook_t, sync_state);
 +#define V_sync_state           VNET(sync_state)
 +VNET_DECLARE(ipfw_hook_t, sync_alias);
 +#define V_sync_alias           VNET(sync_alias)
 +#endif
 +  +
+#ifdef IPFW_INTERNAL+VNET_DEFINE(ipfw_hook_t, hook_alias) = NULL;
+       if (lnk && V_hook_alias) 
+               V_hook_alias((void*) lnk); 
 +#endif  +#endif
   +
    static LIST_HEAD(, libalias) instancehead = LIST_HEAD_INITIALIZER(instancehead);
    int LibAliasTime;
    
   @@ -566,9 +584,14 @@ AddLink(struct libalias *la, struct in_addr src_addr, struct in_addr dst_addr,
        int alias_port_param, int link_type)
    {
           struct alias_link *lnk;
   +       int sync = 0;
    
           LIBALIAS_LOCK_ASSERT(la);
    
   +       if (link_type & LINK_SYNC_MASK)
   +               sync = 42;
   +       link_type &= ~LINK_SYNC_MASK;
   +
           lnk = malloc(sizeof(struct alias_link));
           if (lnk == NULL) {
    #ifdef LIBALIAS_DEBUG
   @@ -708,6 +731,11 @@ AddLink(struct libalias *la, struct in_addr src_addr, struct in_addr dst_addr,
           if (la->packetAliasMode & PKT_ALIAS_LOG)
                   ShowAliasStats(la);
    
   +#ifdef _KERNEL
   +       if (!sync && lnk && V_hook_alias)
   +               V_hook_alias(lnk, NULL);
   +#endif
   +
         return (lnk);          return (lnk);
  }   }
     

Removed from v.1.1  
changed lines
  Added in v.1.6


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>