[BACK]Return to key.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / netipsec

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/netipsec/key.c between version 1.24 and 1.25

version 1.24, 2005/05/08 18:44:40 version 1.25, 2005/06/10 13:22:42
Line 4802  key_do_getnewspi(spirange, saidx)
Line 4802  key_do_getnewspi(spirange, saidx)
         struct secasindex *saidx;          struct secasindex *saidx;
 {  {
         u_int32_t newspi;          u_int32_t newspi;
         u_int32_t min, max;          u_int32_t spmin, spmax;
         int count = key_spi_trycnt;          int count = key_spi_trycnt;
   
         /* set spi range to allocate */          /* set spi range to allocate */
         if (spirange != NULL) {          if (spirange != NULL) {
                 min = spirange->sadb_spirange_min;                  spmin = spirange->sadb_spirange_min;
                 max = spirange->sadb_spirange_max;                  spmax = spirange->sadb_spirange_max;
         } else {          } else {
                 min = key_spi_minval;                  spmin = key_spi_minval;
                 max = key_spi_maxval;                  spmax = key_spi_maxval;
         }          }
         /* IPCOMP needs 2-byte SPI */          /* IPCOMP needs 2-byte SPI */
         if (saidx->proto == IPPROTO_IPCOMP) {          if (saidx->proto == IPPROTO_IPCOMP) {
                 u_int32_t t;                  u_int32_t t;
                 if (min >= 0x10000)                  if (spmin >= 0x10000)
                         min = 0xffff;                          spmin = 0xffff;
                 if (max >= 0x10000)                  if (spmax >= 0x10000)
                         max = 0xffff;                          spmax = 0xffff;
                 if (min > max) {                  if (spmin > spmax) {
                         t = min; min = max; max = t;                          t = spmin; spmin = spmax; spmax = t;
                 }                  }
         }          }
   
         if (min == max) {          if (spmin == spmax) {
                 if (key_checkspidup(saidx, min) != NULL) {                  if (key_checkspidup(saidx, spmin) != NULL) {
                         ipseclog((LOG_DEBUG, "key_do_getnewspi: SPI %u exists already.\n", min));                          ipseclog((LOG_DEBUG, "key_do_getnewspi: SPI %u exists already.\n", spmin));
                         return 0;                          return 0;
                 }                  }
   
                 count--; /* taking one cost. */                  count--; /* taking one cost. */
                 newspi = min;                  newspi = spmin;
   
         } else {          } else {
   
Line 4842  key_do_getnewspi(spirange, saidx)
Line 4842  key_do_getnewspi(spirange, saidx)
                 /* when requesting to allocate spi ranged */                  /* when requesting to allocate spi ranged */
                 while (count--) {                  while (count--) {
                         /* generate pseudo-random SPI value ranged. */                          /* generate pseudo-random SPI value ranged. */
                         newspi = min + (key_random() % (max - min + 1));                          newspi = spmin + (key_random() % (spmax - spmin + 1));
   
                         if (key_checkspidup(saidx, newspi) == NULL)                          if (key_checkspidup(saidx, newspi) == NULL)
                                 break;                                  break;
Line 5671  static void
Line 5671  static void
 key_getsizes_ah(  key_getsizes_ah(
         const struct auth_hash *ah,          const struct auth_hash *ah,
         int alg,          int alg,
         u_int16_t* min,          u_int16_t* ksmin,
         u_int16_t* max)          u_int16_t* ksmax)
 {  {
         *min = *max = ah->keysize;          *ksmin = *ksmax = ah->keysize;
         if (ah->keysize == 0) {          if (ah->keysize == 0) {
                 /*                  /*
                  * Transform takes arbitrary key size but algorithm                   * Transform takes arbitrary key size but algorithm
                  * key size is restricted.  Enforce this here.                   * key size is restricted.  Enforce this here.
                  */                   */
                 switch (alg) {                  switch (alg) {
                 case SADB_X_AALG_MD5:   *min = *max = 16; break;                  case SADB_X_AALG_MD5:   *ksmin = *ksmax = 16; break;
                 case SADB_X_AALG_SHA:   *min = *max = 20; break;                  case SADB_X_AALG_SHA:   *ksmin = *ksmax = 20; break;
                 case SADB_X_AALG_NULL:  *min = 1; *max = 256; break;                  case SADB_X_AALG_NULL:  *ksmin = 1; *ksmax = 256; break;
                 default:                  default:
                         DPRINTF(("key_getsizes_ah: unknown AH algorithm %u\n",                          DPRINTF(("key_getsizes_ah: unknown AH algorithm %u\n",
                                 alg));                                  alg));

Legend:
Removed from v.1.24  
changed lines
  Added in v.1.25

CVSweb <webmaster@jp.NetBSD.org>