Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/netinet remove now unused pseudo-random ip id code.



details:   https://anonhg.NetBSD.org/src/rev/fe7d03f09789
branches:  trunk
changeset: 960118:fe7d03f09789
user:      christos <christos%NetBSD.org@localhost>
date:      Mon Mar 08 18:03:25 2021 +0000

description:
remove now unused pseudo-random ip id code.

diffstat:

 sys/netinet/files.netinet |    3 +-
 sys/netinet/in_var.h      |   10 +--
 sys/netinet/ip_id.c       |  148 ----------------------------------------------
 sys/netinet/ip_input.c    |    6 +-
 4 files changed, 4 insertions(+), 163 deletions(-)

diffs (227 lines):

diff -r 71a44e83f901 -r fe7d03f09789 sys/netinet/files.netinet
--- a/sys/netinet/files.netinet Mon Mar 08 17:54:43 2021 +0000
+++ b/sys/netinet/files.netinet Mon Mar 08 18:03:25 2021 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: files.netinet,v 1.28 2017/07/29 05:48:16 maxv Exp $
+#      $NetBSD: files.netinet,v 1.29 2021/03/08 18:03:25 christos Exp $
 
 defflag opt_tcp_debug.h                TCP_DEBUG
 defparam opt_tcp_debug.h       TCP_NDEBUG
@@ -34,7 +34,6 @@
 file   netinet/in_selsrc.c     inet & ipselsrc
 file   netinet/ip_flow.c       inet & gateway
 file   netinet/ip_icmp.c       inet
-file   netinet/ip_id.c         inet
 file   netinet/ip_input.c      inet
 file   netinet/ip_mroute.c     inet & mrouting
 file   netinet/ip_output.c     inet
diff -r 71a44e83f901 -r fe7d03f09789 sys/netinet/in_var.h
--- a/sys/netinet/in_var.h      Mon Mar 08 17:54:43 2021 +0000
+++ b/sys/netinet/in_var.h      Mon Mar 08 18:03:25 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: in_var.h,v 1.99 2021/03/08 17:54:23 christos Exp $     */
+/*     $NetBSD: in_var.h,v 1.100 2021/03/08 18:03:25 christos Exp $    */
 
 /*-
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -447,14 +447,6 @@
 void   in_addrhash_remove(struct in_ifaddr *);
 int    ipflow_fastforward(struct mbuf *);
 
-struct ipid_state;
-typedef struct ipid_state ipid_state_t;
-
-ipid_state_t * ip_id_init(void);
-void           ip_id_fini(ipid_state_t *);
-uint16_t       ip_randomid(ipid_state_t *, uint16_t);
-
-extern ipid_state_t *  ip_ids;
 extern uint16_t                ip_id;
 extern int             ip_do_randomid;
 
diff -r 71a44e83f901 -r fe7d03f09789 sys/netinet/ip_id.c
--- a/sys/netinet/ip_id.c       Mon Mar 08 17:54:43 2021 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,148 +0,0 @@
-/*     $NetBSD: ip_id.c,v 1.16 2019/10/18 04:09:02 msaitoh Exp $       */
-
-/*-
- * Copyright (c) 2008 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by the 3am Software Foundry ("3am").  It was developed by Matt Thomas.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ip_id.c,v 1.16 2019/10/18 04:09:02 msaitoh Exp $");
-
-#include <sys/param.h>
-#include <sys/kmem.h>
-#include <sys/mutex.h>
-#include <sys/cprng.h>
-
-#include <net/if.h>
-#include <netinet/in.h>
-#include <netinet/in_var.h>
-
-#include <lib/libkern/libkern.h>
-
-#define        IPID_MAXID      65535
-#define        IPID_NUMIDS     32768
-
-struct ipid_state {
-       kmutex_t        ids_lock;
-       uint16_t        ids_start_slot;
-       uint16_t        ids_slots[IPID_MAXID];
-};
-
-static inline uint32_t
-ipid_random(void)
-{
-       return cprng_fast32();
-}
-
-/*
- * Initializes the  
- * the msb flag. The msb flag is used to generate two distinct
- * cycles of random numbers and thus avoiding reuse of ids.
- *
- * This function is called from id_randomid() when needed, an
- * application does not have to worry about it.
- */
-ipid_state_t *
-ip_id_init(void)
-{
-       ipid_state_t *ids;
-       size_t i;
-
-       ids = kmem_alloc(sizeof(ipid_state_t), KM_SLEEP);
-       mutex_init(&ids->ids_lock, MUTEX_DEFAULT, IPL_SOFTNET);
-
-       ids->ids_start_slot = ipid_random();
-       for (i = 0; i < __arraycount(ids->ids_slots); i++) {
-               ids->ids_slots[i] = i;
-       }
-
-       /*
-        * Shuffle the array.
-        */
-       for (i = __arraycount(ids->ids_slots); --i > 0;) {
-               size_t k = ipid_random() % (i + 1);
-               uint16_t t = ids->ids_slots[i];
-               ids->ids_slots[i] = ids->ids_slots[k];
-               ids->ids_slots[k] = t;
-       }
-       return ids;
-}
-
-void
-ip_id_fini(ipid_state_t *ids)
-{
-
-       mutex_destroy(&ids->ids_lock);
-       kmem_free(ids, sizeof(ipid_state_t));
-}
-
-uint16_t
-ip_randomid(ipid_state_t *ids, uint16_t salt)
-{
-       uint32_t r, k, id;
-
-       /* A random number. */
-       r = ipid_random();
-
-       /*
-        * We do a modified Fisher-Yates shuffle but only one position at a
-        * time. Instead of the last entry, we swap with the first entry and
-        * then advance the start of the window by 1.  The next time that 
-        * swapped-out entry can be used is at least 32768 iterations in the
-        * future.
-        *
-        * The easiest way to visual this is to imagine a card deck with 52
-        * cards.  First thing we do is split that into two sets, each with
-        * half of the cards; call them deck A and deck B.  Pick a card
-        * randomly from deck A and remember it, then place it at the
-        * bottom of deck B.  Then take the top card from deck B and add it
-        * to deck A.  Pick another card randomly from deck A and ...
-        */
-       mutex_enter(&ids->ids_lock);
-       k = (r & (IPID_NUMIDS - 1)) + ids->ids_start_slot;
-       if (k >= IPID_MAXID) {
-               k -= IPID_MAXID;
-       }
-       id = ids->ids_slots[k];
-       if (k != ids->ids_start_slot) {
-               ids->ids_slots[k] = ids->ids_slots[ids->ids_start_slot];
-               ids->ids_slots[ids->ids_start_slot] = id;
-       }
-       if (++ids->ids_start_slot == IPID_MAXID) {
-               ids->ids_start_slot = 0;
-       }
-       mutex_exit(&ids->ids_lock);
-
-       /*
-        * Add an optional salt to the id to further obscure it.
-        */
-       id += salt;
-       if (id >= IPID_MAXID) {
-               id -= IPID_MAXID;
-       }
-       return (uint16_t)htons(id + 1);
-}
diff -r 71a44e83f901 -r fe7d03f09789 sys/netinet/ip_input.c
--- a/sys/netinet/ip_input.c    Mon Mar 08 17:54:43 2021 +0000
+++ b/sys/netinet/ip_input.c    Mon Mar 08 18:03:25 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: ip_input.c,v 1.400 2021/03/07 14:58:27 christos Exp $  */
+/*     $NetBSD: ip_input.c,v 1.401 2021/03/08 18:03:25 christos Exp $  */
 
 /*
  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -91,7 +91,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ip_input.c,v 1.400 2021/03/07 14:58:27 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ip_input.c,v 1.401 2021/03/08 18:03:25 christos Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -189,7 +189,6 @@
 
 pktqueue_t *           ip_pktq                 __read_mostly;
 pfil_head_t *          inet_pfil_hook          __read_mostly;
-ipid_state_t *         ip_ids                  __read_mostly;
 percpu_t *             ipstat_percpu           __read_mostly;
 
 static percpu_t                *ipforward_rt_percpu    __cacheline_aligned;
@@ -291,7 +290,6 @@
 
        ip_reass_init();
 
-       ip_ids = ip_id_init();
        ip_id = time_uptime & 0xfffff;
 
 #ifdef GATEWAY



Home | Main Index | Thread Index | Old Index