patch-2.2.11 linux/net/ipv4/raw.c
Next file: linux/net/ipv4/route.c
Previous file: linux/net/ipv4/ipmr.c
Back to the patch index
Back to the overall index
- Lines: 87
- Date:
Mon Aug 9 12:04:41 1999
- Orig file:
v2.2.10/linux/net/ipv4/raw.c
- Orig date:
Mon Nov 16 10:39:27 1998
diff -u --recursive --new-file v2.2.10/linux/net/ipv4/raw.c linux/net/ipv4/raw.c
@@ -5,7 +5,7 @@
*
* RAW - implementation of IP "raw" sockets.
*
- * Version: $Id: raw.c,v 1.39 1998/11/08 11:17:04 davem Exp $
+ * Version: $Id: raw.c,v 1.39.2.1 1999/06/20 20:14:50 davem Exp $
*
* Authors: Ross Biro, <bir7@leland.Stanford.Edu>
* Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
@@ -70,57 +70,25 @@
static void raw_v4_hash(struct sock *sk)
{
- struct sock **skp;
- int num = sk->num;
+ struct sock **skp = &raw_v4_htable[sk->num & (RAWV4_HTABLE_SIZE - 1)];
- num &= (RAWV4_HTABLE_SIZE - 1);
- skp = &raw_v4_htable[num];
SOCKHASH_LOCK();
- sk->next = *skp;
+ if ((sk->next = *skp) != NULL)
+ (*skp)->pprev = &sk->next;
*skp = sk;
- sk->hashent = num;
+ sk->pprev = skp;
SOCKHASH_UNLOCK();
}
static void raw_v4_unhash(struct sock *sk)
{
- struct sock **skp;
- int num = sk->num;
-
- num &= (RAWV4_HTABLE_SIZE - 1);
- skp = &raw_v4_htable[num];
-
- SOCKHASH_LOCK();
- while(*skp != NULL) {
- if(*skp == sk) {
- *skp = sk->next;
- break;
- }
- skp = &((*skp)->next);
- }
- SOCKHASH_UNLOCK();
-}
-
-static void raw_v4_rehash(struct sock *sk)
-{
- struct sock **skp;
- int num = sk->num;
- int oldnum = sk->hashent;
-
- num &= (RAWV4_HTABLE_SIZE - 1);
- skp = &raw_v4_htable[oldnum];
-
SOCKHASH_LOCK();
- while(*skp != NULL) {
- if(*skp == sk) {
- *skp = sk->next;
- break;
- }
- skp = &((*skp)->next);
+ if (sk->pprev) {
+ if (sk->next)
+ sk->next->pprev = sk->pprev;
+ *sk->pprev = sk->next;
+ sk->pprev = NULL;
}
- sk->next = raw_v4_htable[num];
- raw_v4_htable[num] = sk;
- sk->hashent = num;
SOCKHASH_UNLOCK();
}
@@ -596,9 +564,7 @@
raw_rcv_skb, /* backlog_rcv */
raw_v4_hash, /* hash */
raw_v4_unhash, /* unhash */
- raw_v4_rehash, /* rehash */
- NULL, /* good_socknum */
- NULL, /* verify_bind */
+ NULL, /* get_port */
128, /* max_header */
0, /* retransmits */
"RAW", /* name */
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)