Print this page
First attempt at further IPsec cluster cleanup
        
*** 144,157 ****
  #define ipsa_encr_alg ipsa_encrkeydata.sak_algid
  
          struct ipsid_s *ipsa_src_cid;   /* Source certificate identity */
          struct ipsid_s *ipsa_dst_cid;   /* Destination certificate identity */
          mblk_t  *ipsa_lpkt;     /* Packet received while larval (CAS me) */
-         mblk_t  *ipsa_bpkt_head;        /* Packets received while idle */
-         mblk_t  *ipsa_bpkt_tail;
- #define SADB_MAX_IDLEPKTS       100
-         uint8_t ipsa_mblkcnt;   /* Number of packets received while idle */
  
          /*
           * PF_KEYv2 supports a replay window size of 255.  Hence there is a
           * need a bit vector to support a replay window of 255.  256 is a nice
           * round number, so I support that.
--- 144,153 ----
*** 449,460 ****
  /* SA states are important for handling UPDATE PF_KEY messages. */
  #define IPSA_STATE_LARVAL               SADB_SASTATE_LARVAL
  #define IPSA_STATE_MATURE               SADB_SASTATE_MATURE
  #define IPSA_STATE_DYING                SADB_SASTATE_DYING
  #define IPSA_STATE_DEAD                 SADB_SASTATE_DEAD
! #define IPSA_STATE_IDLE                 SADB_X_SASTATE_IDLE
! #define IPSA_STATE_ACTIVE_ELSEWHERE     SADB_X_SASTATE_ACTIVE_ELSEWHERE
  
  /*
   * NOTE:  If the document authors do things right in defining algorithms, we'll
   *        probably have flags for what all is here w.r.t. replay, ESP w/HMAC,
   *        etc.
--- 445,457 ----
  /* SA states are important for handling UPDATE PF_KEY messages. */
  #define IPSA_STATE_LARVAL               SADB_SASTATE_LARVAL
  #define IPSA_STATE_MATURE               SADB_SASTATE_MATURE
  #define IPSA_STATE_DYING                SADB_SASTATE_DYING
  #define IPSA_STATE_DEAD                 SADB_SASTATE_DEAD
! /* Deprecated */
! /* #define      IPSA_STATE_IDLE                 SADB_X_SASTATE_IDLE */
! /* #define      IPSA_STATE_ACTIVE_ELSEWHERE SADB_X_SASTATE_ACTIVE_ELSEWHERE */
  
  /*
   * NOTE:  If the document authors do things right in defining algorithms, we'll
   *        probably have flags for what all is here w.r.t. replay, ESP w/HMAC,
   *        etc.
*** 757,767 ****
  int sadb_common_add(queue_t *, mblk_t *, sadb_msg_t *,
      keysock_in_t *, isaf_t *, isaf_t *, ipsa_t *, boolean_t, boolean_t, int *,
      netstack_t *, sadbp_t *);
  void sadb_set_usetime(ipsa_t *);
  boolean_t sadb_age_bytes(queue_t *, ipsa_t *, uint64_t, boolean_t);
! int sadb_update_sa(mblk_t *, keysock_in_t *, mblk_t **, sadbp_t *,
      int *, queue_t *, int (*)(mblk_t *, keysock_in_t *, int *, netstack_t *),
      netstack_t *, uint8_t);
  void sadb_acquire(mblk_t *, ip_xmit_attr_t *, boolean_t, boolean_t);
  void gcm_params_init(ipsa_t *, uchar_t *, uint_t, uchar_t *, ipsa_cm_mech_t *,
      crypto_data_t *);
--- 754,764 ----
  int sadb_common_add(queue_t *, mblk_t *, sadb_msg_t *,
      keysock_in_t *, isaf_t *, isaf_t *, ipsa_t *, boolean_t, boolean_t, int *,
      netstack_t *, sadbp_t *);
  void sadb_set_usetime(ipsa_t *);
  boolean_t sadb_age_bytes(queue_t *, ipsa_t *, uint64_t, boolean_t);
! int sadb_update_sa(mblk_t *, keysock_in_t *, sadbp_t *,
      int *, queue_t *, int (*)(mblk_t *, keysock_in_t *, int *, netstack_t *),
      netstack_t *, uint8_t);
  void sadb_acquire(mblk_t *, ip_xmit_attr_t *, boolean_t, boolean_t);
  void gcm_params_init(ipsa_t *, uchar_t *, uint_t, uchar_t *, ipsa_cm_mech_t *,
      crypto_data_t *);
*** 771,781 ****
      crypto_data_t *);
  
  void sadb_destroy_acquire(ipsacq_t *, netstack_t *);
  struct ipsec_stack;
  mblk_t *sadb_setup_acquire(ipsacq_t *, uint8_t, struct ipsec_stack *);
! ipsa_t *sadb_getspi(keysock_in_t *, uint32_t, int *, netstack_t *, uint_t);
  void sadb_in_acquire(sadb_msg_t *, sadbp_t *, queue_t *, netstack_t *);
  boolean_t sadb_replay_check(ipsa_t *, uint32_t);
  boolean_t sadb_replay_peek(ipsa_t *, uint32_t);
  int sadb_dump(queue_t *, mblk_t *, keysock_in_t *, sadb_t *);
  void sadb_replay_delete(ipsa_t *);
--- 768,778 ----
      crypto_data_t *);
  
  void sadb_destroy_acquire(ipsacq_t *, netstack_t *);
  struct ipsec_stack;
  mblk_t *sadb_setup_acquire(ipsacq_t *, uint8_t, struct ipsec_stack *);
! ipsa_t *sadb_getspi(keysock_in_t *, uint32_t, int *, netstack_t *);
  void sadb_in_acquire(sadb_msg_t *, sadbp_t *, queue_t *, netstack_t *);
  boolean_t sadb_replay_check(ipsa_t *, uint32_t);
  boolean_t sadb_replay_peek(ipsa_t *, uint32_t);
  int sadb_dump(queue_t *, mblk_t *, keysock_in_t *, sadb_t *);
  void sadb_replay_delete(ipsa_t *);
*** 784,818 ****
  timeout_id_t sadb_retimeout(hrtime_t, queue_t *, void (*)(void *), void *,
      uint_t *, uint_t, short);
  void sadb_sa_refrele(void *target);
  mblk_t *sadb_set_lpkt(ipsa_t *, mblk_t *, ip_recv_attr_t *);
  mblk_t *sadb_clear_lpkt(ipsa_t *);
- void sadb_buf_pkt(ipsa_t *, mblk_t *, ip_recv_attr_t *);
- void sadb_clear_buf_pkt(void *ipkt);
  
- /* Note that buf_pkt is the product of ip_recv_attr_to_mblk() */
- #define HANDLE_BUF_PKT(taskq, stack, dropper, buf_pkt)                  \
- {                                                                       \
-         if (buf_pkt != NULL) {                                          \
-                 if (taskq_dispatch(taskq, sadb_clear_buf_pkt,           \
-                     (void *) buf_pkt, TQ_NOSLEEP) == 0) {               \
-                     /* Dispatch was unsuccessful drop the packets. */   \
-                         mblk_t          *tmp;                           \
-                         while (buf_pkt != NULL) {                       \
-                                 tmp = buf_pkt->b_next;                  \
-                                 buf_pkt->b_next = NULL;                 \
-                                 buf_pkt = ip_recv_attr_free_mblk(buf_pkt); \
-                                 ip_drop_packet(buf_pkt, B_TRUE, NULL,   \
-                                     DROPPER(stack,                      \
-                                     ipds_sadb_inidle_timeout),          \
-                                     &dropper);                          \
-                                 buf_pkt = tmp;                          \
-                         }                                               \
-                 }                                                       \
-         }                                                               \
- }                                                                       \
- 
  /*
   * Two IPsec rate-limiting routines.
   */
  /*PRINTFLIKE6*/
  extern void ipsec_rl_strlog(netstack_t *, short, short, char,
--- 781,791 ----