Print this page
First attempt at further IPsec cluster cleanup

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/inet/ip/keysock.c
          +++ new/usr/src/uts/common/inet/ip/keysock.c
↓ open down ↓ 1560 lines elided ↑ open up ↑
1561 1561                  }
1562 1562                  freemsg(mp);
1563 1563          }
1564 1564  
1565 1565          /*
1566 1566           * Set global to indicate we prefer an extended ACQUIRE.
1567 1567           */
1568 1568          atomic_inc_32(&keystack->keystack_num_extended);
1569 1569  }
1570 1570  
1571      -static void
1572      -keysock_delpair_all(keysock_t *ks, mblk_t *mp, sadb_ext_t *extv[])
1573      -{
1574      -        int i, start, finish;
1575      -        mblk_t *mp1 = NULL;
1576      -        keysock_stack_t *keystack = ks->keysock_keystack;
1577      -
1578      -        start = 0;
1579      -        finish = KEYSOCK_MAX_CONSUMERS - 1;
1580      -
1581      -        for (i = start; i <= finish; i++) {
1582      -                if (keystack->keystack_consumers[i] != NULL) {
1583      -                        mp1 = copymsg(mp);
1584      -                        if (mp1 == NULL) {
1585      -                                keysock_error(ks, mp, ENOMEM,
1586      -                                    SADB_X_DIAGNOSTIC_NONE);
1587      -                                return;
1588      -                        }
1589      -                        keysock_passdown(ks, mp1, i, extv, B_FALSE);
1590      -                }
1591      -        }
1592      -}
1593      -
1594 1571  /*
1595 1572   * Handle PF_KEY messages.
1596 1573   */
1597 1574  static void
1598 1575  keysock_parse(queue_t *q, mblk_t *mp)
1599 1576  {
1600 1577          sadb_msg_t *samsg;
1601 1578          sadb_ext_t *extv[SADB_EXT_MAX + 1];
1602 1579          keysock_t *ks = (keysock_t *)q->q_ptr;
1603 1580          uint_t msgsize;
↓ open down ↓ 101 lines elided ↑ open up ↑
1705 1682          case SADB_GET:
1706 1683                  /*
1707 1684                   * Pass down to appropriate consumer.
1708 1685                   */
1709 1686                  if (samsg->sadb_msg_satype != SADB_SATYPE_UNSPEC)
1710 1687                          keysock_passdown(ks, mp, samsg->sadb_msg_satype, extv,
1711 1688                              B_FALSE);
1712 1689                  else keysock_error(ks, mp, EINVAL,
1713 1690                      SADB_X_DIAGNOSTIC_SATYPE_NEEDED);
1714 1691                  return;
1715      -        case SADB_X_DELPAIR_STATE:
1716      -                if (samsg->sadb_msg_satype == SADB_SATYPE_UNSPEC) {
1717      -                        keysock_delpair_all(ks, mp, extv);
1718      -                } else {
1719      -                        keysock_passdown(ks, mp, samsg->sadb_msg_satype, extv,
1720      -                            B_FALSE);
1721      -                }
1722      -                return;
1723 1692          case SADB_ACQUIRE:
1724 1693                  /*
1725 1694                   * If I _receive_ an acquire, this means I should spread it
1726 1695                   * out to registered sockets.  Unless there's an errno...
1727 1696                   *
1728 1697                   * Need ADDRESS, may have ID, SENS, and PROP, unless errno,
1729 1698                   * in which case there should be NO extensions.
1730 1699                   *
1731 1700                   * Return to registered.
1732 1701                   */
↓ open down ↓ 34 lines elided ↑ open up ↑
1767 1736                  /*
1768 1737                   * If someone sends this in, then send out to all senders.
1769 1738                   * (Save maybe ESP or AH, I have to be careful here.)
1770 1739                   *
1771 1740                   * Need ADDRESS, may have ID and SENS.
1772 1741                   *
1773 1742                   * XXX for now this is unsupported.
1774 1743                   */
1775 1744                  break;
1776 1745          case SADB_FLUSH:
     1746 +        case SADB_DUMP:  /* not used by normal applications */
1777 1747                  /*
1778 1748                   * Nuke all SAs.
1779 1749                   *
1780 1750                   * No extensions at all.  Return to all listeners.
1781 1751                   *
1782 1752                   * Question:    Should I hold a lock here to prevent
1783 1753                   *              additions/deletions while flushing?
1784 1754                   * Answer:      No.  (See keysock_passdown() for details.)
1785 1755                   */
1786 1756                  if (extv[0] != NULL) {
↓ open down ↓ 2 lines elided ↑ open up ↑
1789 1759                           * Return EINVAL.
1790 1760                           */
1791 1761                          ks2dbg(keystack, ("FLUSH message with extension.\n"));
1792 1762                          keysock_error(ks, mp, EINVAL, SADB_X_DIAGNOSTIC_NO_EXT);
1793 1763                          return;
1794 1764                  }
1795 1765  
1796 1766                  /* Passing down of DUMP/FLUSH messages are special. */
1797 1767                  qwriter(q, mp, keysock_do_flushdump, PERIM_INNER);
1798 1768                  return;
1799      -        case SADB_DUMP:  /* not used by normal applications */
1800      -                if ((extv[0] != NULL) &&
1801      -                    ((msgsize >
1802      -                    (sizeof (sadb_msg_t) + sizeof (sadb_x_edump_t))) ||
1803      -                    (extv[SADB_X_EXT_EDUMP] == NULL))) {
1804      -                                keysock_error(ks, mp, EINVAL,
1805      -                                    SADB_X_DIAGNOSTIC_NO_EXT);
1806      -                                return;
1807      -                }
1808      -                qwriter(q, mp, keysock_do_flushdump, PERIM_INNER);
1809      -                return;
1810 1769          case SADB_X_PROMISC:
1811 1770                  /*
1812 1771                   * Promiscuous processing message.
1813 1772                   */
1814 1773                  if (samsg->sadb_msg_satype == 0)
1815 1774                          ks->keysock_flags &= ~KEYSOCK_PROMISC;
1816 1775                  else
1817 1776                          ks->keysock_flags |= KEYSOCK_PROMISC;
1818 1777                  keysock_passup(mp, samsg, ks->keysock_serial, NULL, B_FALSE,
1819 1778                      keystack);
↓ open down ↓ 567 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX