mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 13:11:40 +00:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (28 commits) [NET_SCHED] sch_htb: htb_requeue fix [IPV6]: Replace using the magic constant "1024" with IP6_RT_PRIO_USER for fc_metric. starfire: secton fix via-velocity: section fix natsemi: section fix typhoon: section fix isdn: fix section mismatch warning for ISACVer isdn: fix section mismatch warnings from hisax_cs_setup_card isdn: fix section mismatch warnings in isac.c and isar.c isdn: fix section mismatch warning in hfc_sx.c [PKT_SCHED] ematch: tcf_em_destroy robustness [PKT_SCHED]: deinline functions in meta match [SCTP]: Convert sctp_dbg_objcnt to seq files. [SCTP]: Use snmp_fold_field instead of a homebrew analogue. [IGMP]: Optimize kfree_skb in igmp_rcv. [KEY]: Convert net/pfkey to use seq files. [KEY]: Clean up proc files creation a bit. pppol2tp: fix printk warnings bnx2: section fix bnx2x: section fix ...
This commit is contained in:
commit
25f6663006
@ -213,8 +213,7 @@ AVM_card_msg(struct IsdnCardState *cs, int mt, void *arg)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
setup_avm_a1_pcmcia(struct IsdnCard *card)
|
||||
int __devinit setup_avm_a1_pcmcia(struct IsdnCard *card)
|
||||
{
|
||||
u_char model, vers;
|
||||
struct IsdnCardState *cs = card->cs;
|
||||
|
@ -847,7 +847,7 @@ static int init_card(struct IsdnCardState *cs)
|
||||
return 3;
|
||||
}
|
||||
|
||||
static int hisax_cs_setup_card(struct IsdnCard *card)
|
||||
static int __devinit hisax_cs_setup_card(struct IsdnCard *card)
|
||||
{
|
||||
int ret;
|
||||
|
||||
@ -1166,7 +1166,10 @@ outf_cs:
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int checkcard(int cardnr, char *id, int *busy_flag, struct module *lockowner)
|
||||
/* Used from an exported function but calls __devinit functions.
|
||||
* Tell modpost not to warn (__ref)
|
||||
*/
|
||||
static int __ref checkcard(int cardnr, char *id, int *busy_flag, struct module *lockowner)
|
||||
{
|
||||
int ret;
|
||||
struct IsdnCard *card = cards + cardnr;
|
||||
|
@ -1330,8 +1330,7 @@ hfcsx_bh(struct work_struct *work)
|
||||
/********************************/
|
||||
/* called for card init message */
|
||||
/********************************/
|
||||
static void __devinit
|
||||
inithfcsx(struct IsdnCardState *cs)
|
||||
static void inithfcsx(struct IsdnCardState *cs)
|
||||
{
|
||||
cs->setstack_d = setstack_hfcsx;
|
||||
cs->BC_Send_Data = &hfcsx_send_data;
|
||||
|
@ -27,8 +27,7 @@ static char *ISACVer[] __devinitdata =
|
||||
{"2086/2186 V1.1", "2085 B1", "2085 B2",
|
||||
"2085 V2.3"};
|
||||
|
||||
void
|
||||
ISACVersion(struct IsdnCardState *cs, char *s)
|
||||
void __devinit ISACVersion(struct IsdnCardState *cs, char *s)
|
||||
{
|
||||
int val;
|
||||
|
||||
@ -616,8 +615,7 @@ dbusy_timer_handler(struct IsdnCardState *cs)
|
||||
}
|
||||
}
|
||||
|
||||
void __devinit
|
||||
initisac(struct IsdnCardState *cs)
|
||||
void initisac(struct IsdnCardState *cs)
|
||||
{
|
||||
cs->setstack_d = setstack_isac;
|
||||
cs->DC_Close = DC_Close_isac;
|
||||
@ -648,8 +646,7 @@ initisac(struct IsdnCardState *cs)
|
||||
cs->writeisac(cs, ISAC_MASK, 0x0);
|
||||
}
|
||||
|
||||
void __devinit
|
||||
clear_pending_isac_ints(struct IsdnCardState *cs)
|
||||
void clear_pending_isac_ints(struct IsdnCardState *cs)
|
||||
{
|
||||
int val, eval;
|
||||
|
||||
|
@ -1894,8 +1894,7 @@ isar_auxcmd(struct IsdnCardState *cs, isdn_ctrl *ic) {
|
||||
return(0);
|
||||
}
|
||||
|
||||
void __devinit
|
||||
initisar(struct IsdnCardState *cs)
|
||||
void initisar(struct IsdnCardState *cs)
|
||||
{
|
||||
cs->bcs[0].BC_SetStack = setstack_isar;
|
||||
cs->bcs[1].BC_SetStack = setstack_isar;
|
||||
|
@ -64,7 +64,7 @@
|
||||
/* Time in jiffies before concluding the transmitter is hung. */
|
||||
#define TX_TIMEOUT (5*HZ)
|
||||
|
||||
static const char version[] __devinitdata =
|
||||
static char version[] __devinitdata =
|
||||
"Broadcom NetXtreme II Gigabit Ethernet Driver " DRV_MODULE_NAME " v" DRV_MODULE_VERSION " (" DRV_MODULE_RELDATE ")\n";
|
||||
|
||||
MODULE_AUTHOR("Michael Chan <mchan@broadcom.com>");
|
||||
@ -90,7 +90,7 @@ typedef enum {
|
||||
} board_t;
|
||||
|
||||
/* indexed by board_t, above */
|
||||
static const struct {
|
||||
static struct {
|
||||
char *name;
|
||||
} board_info[] __devinitdata = {
|
||||
{ "Broadcom NetXtreme II BCM5706 1000Base-T" },
|
||||
|
@ -70,7 +70,7 @@
|
||||
/* Time in jiffies before concluding the transmitter is hung. */
|
||||
#define TX_TIMEOUT (5*HZ)
|
||||
|
||||
static const char version[] __devinitdata =
|
||||
static char version[] __devinitdata =
|
||||
"Broadcom NetXtreme II 577xx 10Gigabit Ethernet Driver "
|
||||
DRV_MODULE_NAME " " DRV_MODULE_VERSION " (" DRV_MODULE_RELDATE ")\n";
|
||||
|
||||
@ -107,7 +107,7 @@ enum bnx2x_board_type {
|
||||
};
|
||||
|
||||
/* indexed by board_t, above */
|
||||
static const struct {
|
||||
static struct {
|
||||
char *name;
|
||||
} board_info[] __devinitdata = {
|
||||
{ "Broadcom NetXtreme II BCM57710 XGb" }
|
||||
|
@ -127,7 +127,7 @@ static int full_duplex[MAX_UNITS];
|
||||
#define NATSEMI_RX_LIMIT 2046 /* maximum supported by hardware */
|
||||
|
||||
/* These identify the driver base version and may not be removed. */
|
||||
static const char version[] __devinitdata =
|
||||
static char version[] __devinitdata =
|
||||
KERN_INFO DRV_NAME " dp8381x driver, version "
|
||||
DRV_VERSION ", " DRV_RELDATE "\n"
|
||||
KERN_INFO " originally by Donald Becker <becker@scyld.com>\n"
|
||||
@ -238,7 +238,7 @@ enum {
|
||||
};
|
||||
|
||||
/* array of board data directly indexed by pci_tbl[x].driver_data */
|
||||
static const struct {
|
||||
static struct {
|
||||
const char *name;
|
||||
unsigned long flags;
|
||||
unsigned int eeprom_size;
|
||||
@ -247,7 +247,7 @@ static const struct {
|
||||
{ "NatSemi DP8381[56]", 0, 24 },
|
||||
};
|
||||
|
||||
static const struct pci_device_id natsemi_pci_tbl[] __devinitdata = {
|
||||
static struct pci_device_id natsemi_pci_tbl[] __devinitdata = {
|
||||
{ PCI_VENDOR_ID_NS, 0x0020, 0x12d9, 0x000c, 0, 0, 0 },
|
||||
{ PCI_VENDOR_ID_NS, 0x0020, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1 },
|
||||
{ } /* terminate list */
|
||||
|
@ -2289,10 +2289,12 @@ static void pppol2tp_seq_tunnel_show(struct seq_file *m, void *v)
|
||||
atomic_read(&tunnel->ref_count) - 1);
|
||||
seq_printf(m, " %08x %llu/%llu/%llu %llu/%llu/%llu\n",
|
||||
tunnel->debug,
|
||||
tunnel->stats.tx_packets, tunnel->stats.tx_bytes,
|
||||
tunnel->stats.tx_errors,
|
||||
tunnel->stats.rx_packets, tunnel->stats.rx_bytes,
|
||||
tunnel->stats.rx_errors);
|
||||
(unsigned long long)tunnel->stats.tx_packets,
|
||||
(unsigned long long)tunnel->stats.tx_bytes,
|
||||
(unsigned long long)tunnel->stats.tx_errors,
|
||||
(unsigned long long)tunnel->stats.rx_packets,
|
||||
(unsigned long long)tunnel->stats.rx_bytes,
|
||||
(unsigned long long)tunnel->stats.rx_errors);
|
||||
}
|
||||
|
||||
static void pppol2tp_seq_session_show(struct seq_file *m, void *v)
|
||||
@ -2320,12 +2322,12 @@ static void pppol2tp_seq_session_show(struct seq_file *m, void *v)
|
||||
jiffies_to_msecs(session->reorder_timeout));
|
||||
seq_printf(m, " %hu/%hu %llu/%llu/%llu %llu/%llu/%llu\n",
|
||||
session->nr, session->ns,
|
||||
session->stats.tx_packets,
|
||||
session->stats.tx_bytes,
|
||||
session->stats.tx_errors,
|
||||
session->stats.rx_packets,
|
||||
session->stats.rx_bytes,
|
||||
session->stats.rx_errors);
|
||||
(unsigned long long)session->stats.tx_packets,
|
||||
(unsigned long long)session->stats.tx_bytes,
|
||||
(unsigned long long)session->stats.tx_errors,
|
||||
(unsigned long long)session->stats.rx_packets,
|
||||
(unsigned long long)session->stats.rx_bytes,
|
||||
(unsigned long long)session->stats.rx_errors);
|
||||
}
|
||||
|
||||
static int pppol2tp_seq_show(struct seq_file *m, void *v)
|
||||
|
@ -216,7 +216,7 @@ do { \
|
||||
|
||||
|
||||
/* These identify the driver base version and may not be removed. */
|
||||
static const char version[] __devinitdata =
|
||||
static char version[] =
|
||||
KERN_INFO "starfire.c:v1.03 7/26/2000 Written by Donald Becker <becker@scyld.com>\n"
|
||||
KERN_INFO " (unofficial 2.2/2.4 kernel port, version " DRV_VERSION ", " DRV_RELDATE ")\n";
|
||||
|
||||
|
@ -134,7 +134,7 @@ static const int multicast_filter_limit = 32;
|
||||
#include "typhoon.h"
|
||||
#include "typhoon-firmware.h"
|
||||
|
||||
static const char version[] __devinitdata =
|
||||
static char version[] __devinitdata =
|
||||
"typhoon.c: version " DRV_MODULE_VERSION " (" DRV_MODULE_RELDATE ")\n";
|
||||
|
||||
MODULE_AUTHOR("David Dillow <dave@thedillows.org>");
|
||||
@ -178,7 +178,7 @@ enum typhoon_cards {
|
||||
};
|
||||
|
||||
/* directly indexed by enum typhoon_cards, above */
|
||||
static const struct typhoon_card_info typhoon_card_info[] __devinitdata = {
|
||||
static struct typhoon_card_info typhoon_card_info[] __devinitdata = {
|
||||
{ "3Com Typhoon (3C990-TX)",
|
||||
TYPHOON_CRYPTO_NONE},
|
||||
{ "3Com Typhoon (3CR990-TX-95)",
|
||||
|
@ -440,7 +440,7 @@ static void velocity_unregister_notifier(void)
|
||||
* Internal board variants. At the moment we have only one
|
||||
*/
|
||||
|
||||
static const struct velocity_info_tbl chip_info_table[] __devinitdata = {
|
||||
static struct velocity_info_tbl chip_info_table[] = {
|
||||
{CHIP_TYPE_VT6110, "VIA Networking Velocity Family Gigabit Ethernet Adapter", 1, 0x00FFFFFFUL},
|
||||
{ }
|
||||
};
|
||||
|
@ -10,13 +10,13 @@
|
||||
*
|
||||
* Various protocol defined structures.
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -1,15 +1,15 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* (C) Copyright 2007 Hewlett-Packard Development Company, L.P.
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -1,18 +1,18 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel Implementation
|
||||
* (C) Copyright IBM Corp. 2001, 2004
|
||||
* Copyright (C) 1999-2001 Cisco, Motorola
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* These are the definitions needed for the command object.
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* the SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -1,18 +1,18 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* (C) Copyright IBM Corp. 2001, 2004
|
||||
* Copyright (c) 1999-2000 Cisco, Inc.
|
||||
* Copyright (c) 1999-2001 Motorola, Inc.
|
||||
* Copyright (c) 2001 Intel Corp.
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -1,20 +1,20 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* (C) Copyright IBM Corp. 2001, 2004
|
||||
* Copyright (c) 1999-2000 Cisco, Inc.
|
||||
* Copyright (c) 1999-2001 Motorola, Inc.
|
||||
* Copyright (c) 2001-2003 Intel Corp.
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* The base lksctp header.
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -1,20 +1,20 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* (C) Copyright IBM Corp. 2001, 2004
|
||||
* Copyright (c) 1999-2000 Cisco, Inc.
|
||||
* Copyright (c) 1999-2001 Motorola, Inc.
|
||||
* Copyright (c) 2001 Intel Corp.
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* These are definitions needed by the state machine.
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -1,18 +1,18 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* (C) Copyright IBM Corp. 2001, 2004
|
||||
* Copyright (c) 1999-2000 Cisco, Inc.
|
||||
* Copyright (c) 1999-2001 Motorola, Inc.
|
||||
* Copyright (c) 2001 Intel Corp.
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -1,21 +1,21 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* (C) Copyright IBM Corp. 2001, 2004
|
||||
* Copyright (c) 1999-2000 Cisco, Inc.
|
||||
* Copyright (c) 1999-2001 Motorola, Inc.
|
||||
* Copyright (c) 2001 Intel Corp.
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* These are the definitions needed for the tsnmap type. The tsnmap is used
|
||||
* to track out of order TSNs received.
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* (C) Copyright IBM Corp. 2001, 2004
|
||||
* Copyright (c) 1999-2000 Cisco, Inc.
|
||||
* Copyright (c) 1999-2001 Motorola, Inc.
|
||||
@ -10,15 +10,15 @@
|
||||
* sctp_ulpevent type is used to carry information from the state machine
|
||||
* upwards to the ULP.
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* (C) Copyright IBM Corp. 2001, 2004
|
||||
* Copyright (c) 1999-2000 Cisco, Inc.
|
||||
* Copyright (c) 1999-2001 Motorola, Inc.
|
||||
@ -11,13 +11,13 @@
|
||||
* and the core SCTP state machine. This is the component which handles
|
||||
* reassembly and ordering.
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* the SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -1,21 +1,21 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* (C) Copyright IBM Corp. 2001, 2004
|
||||
* Copyright (c) 1999-2000 Cisco, Inc.
|
||||
* Copyright (c) 1999-2001 Motorola, Inc.
|
||||
* Copyright (c) 2002 Intel Corp.
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* This header represents the structures and constants needed to support
|
||||
* the SCTP Extension to the Sockets API.
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -922,13 +922,11 @@ int igmp_rcv(struct sk_buff *skb)
|
||||
struct in_device *in_dev = in_dev_get(skb->dev);
|
||||
int len = skb->len;
|
||||
|
||||
if (in_dev==NULL) {
|
||||
kfree_skb(skb);
|
||||
return 0;
|
||||
}
|
||||
if (in_dev == NULL)
|
||||
goto drop;
|
||||
|
||||
if (!pskb_may_pull(skb, sizeof(struct igmphdr)))
|
||||
goto drop;
|
||||
goto drop_ref;
|
||||
|
||||
switch (skb->ip_summed) {
|
||||
case CHECKSUM_COMPLETE:
|
||||
@ -938,7 +936,7 @@ int igmp_rcv(struct sk_buff *skb)
|
||||
case CHECKSUM_NONE:
|
||||
skb->csum = 0;
|
||||
if (__skb_checksum_complete(skb))
|
||||
goto drop;
|
||||
goto drop_ref;
|
||||
}
|
||||
|
||||
ih = igmp_hdr(skb);
|
||||
@ -972,8 +970,9 @@ int igmp_rcv(struct sk_buff *skb)
|
||||
break;
|
||||
}
|
||||
|
||||
drop:
|
||||
drop_ref:
|
||||
in_dev_put(in_dev);
|
||||
drop:
|
||||
kfree_skb(skb);
|
||||
return 0;
|
||||
}
|
||||
|
@ -1620,7 +1620,7 @@ static struct rt6_info *rt6_add_route_info(struct in6_addr *prefix, int prefixle
|
||||
{
|
||||
struct fib6_config cfg = {
|
||||
.fc_table = RT6_TABLE_INFO,
|
||||
.fc_metric = 1024,
|
||||
.fc_metric = IP6_RT_PRIO_USER,
|
||||
.fc_ifindex = ifindex,
|
||||
.fc_dst_len = prefixlen,
|
||||
.fc_flags = RTF_GATEWAY | RTF_ADDRCONF | RTF_ROUTEINFO |
|
||||
@ -1670,7 +1670,7 @@ struct rt6_info *rt6_add_dflt_router(struct in6_addr *gwaddr,
|
||||
{
|
||||
struct fib6_config cfg = {
|
||||
.fc_table = RT6_TABLE_DFLT,
|
||||
.fc_metric = 1024,
|
||||
.fc_metric = IP6_RT_PRIO_USER,
|
||||
.fc_ifindex = dev->ifindex,
|
||||
.fc_flags = RTF_GATEWAY | RTF_ADDRCONF | RTF_DEFAULT |
|
||||
RTF_UP | RTF_EXPIRES | RTF_PREF(pref),
|
||||
|
117
net/key/af_key.c
117
net/key/af_key.c
@ -3734,21 +3734,15 @@ static struct net_proto_family pfkey_family_ops = {
|
||||
};
|
||||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
static int pfkey_read_proc(char *buffer, char **start, off_t offset,
|
||||
int length, int *eof, void *data)
|
||||
static int pfkey_seq_show(struct seq_file *f, void *v)
|
||||
{
|
||||
off_t pos = 0;
|
||||
off_t begin = 0;
|
||||
int len = 0;
|
||||
struct sock *s;
|
||||
struct hlist_node *node;
|
||||
|
||||
len += sprintf(buffer,"sk RefCnt Rmem Wmem User Inode\n");
|
||||
|
||||
read_lock(&pfkey_table_lock);
|
||||
|
||||
sk_for_each(s, node, &pfkey_table) {
|
||||
len += sprintf(buffer+len,"%p %-6d %-6u %-6u %-6u %-6lu",
|
||||
s = (struct sock *)v;
|
||||
if (v == SEQ_START_TOKEN)
|
||||
seq_printf(f ,"sk RefCnt Rmem Wmem User Inode\n");
|
||||
else
|
||||
seq_printf(f ,"%p %-6d %-6u %-6u %-6u %-6lu\n",
|
||||
s,
|
||||
atomic_read(&s->sk_refcnt),
|
||||
atomic_read(&s->sk_rmem_alloc),
|
||||
@ -3756,31 +3750,82 @@ static int pfkey_read_proc(char *buffer, char **start, off_t offset,
|
||||
sock_i_uid(s),
|
||||
sock_i_ino(s)
|
||||
);
|
||||
return 0;
|
||||
}
|
||||
|
||||
buffer[len++] = '\n';
|
||||
static void *pfkey_seq_start(struct seq_file *f, loff_t *ppos)
|
||||
{
|
||||
struct sock *s;
|
||||
struct hlist_node *node;
|
||||
loff_t pos = *ppos;
|
||||
|
||||
pos = begin + len;
|
||||
if (pos < offset) {
|
||||
len = 0;
|
||||
begin = pos;
|
||||
}
|
||||
if(pos > offset + length)
|
||||
goto done;
|
||||
}
|
||||
*eof = 1;
|
||||
read_lock(&pfkey_table_lock);
|
||||
if (pos == 0)
|
||||
return SEQ_START_TOKEN;
|
||||
|
||||
done:
|
||||
sk_for_each(s, node, &pfkey_table)
|
||||
if (pos-- == 1)
|
||||
return s;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void *pfkey_seq_next(struct seq_file *f, void *v, loff_t *ppos)
|
||||
{
|
||||
++*ppos;
|
||||
return (v == SEQ_START_TOKEN) ?
|
||||
sk_head(&pfkey_table) :
|
||||
sk_next((struct sock *)v);
|
||||
}
|
||||
|
||||
static void pfkey_seq_stop(struct seq_file *f, void *v)
|
||||
{
|
||||
read_unlock(&pfkey_table_lock);
|
||||
}
|
||||
|
||||
*start = buffer + (offset - begin);
|
||||
len -= (offset - begin);
|
||||
static struct seq_operations pfkey_seq_ops = {
|
||||
.start = pfkey_seq_start,
|
||||
.next = pfkey_seq_next,
|
||||
.stop = pfkey_seq_stop,
|
||||
.show = pfkey_seq_show,
|
||||
};
|
||||
|
||||
if (len > length)
|
||||
len = length;
|
||||
if (len < 0)
|
||||
len = 0;
|
||||
static int pfkey_seq_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open(file, &pfkey_seq_ops);
|
||||
}
|
||||
|
||||
return len;
|
||||
static struct file_operations pfkey_proc_ops = {
|
||||
.open = pfkey_seq_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
|
||||
static int pfkey_init_proc(void)
|
||||
{
|
||||
struct proc_dir_entry *e;
|
||||
|
||||
e = create_proc_entry("pfkey", 0, init_net.proc_net);
|
||||
if (e == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
e->proc_fops = &pfkey_proc_ops;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void pfkey_exit_proc(void)
|
||||
{
|
||||
remove_proc_entry("net/pfkey", NULL);
|
||||
}
|
||||
#else
|
||||
static inline int pfkey_init_proc(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void pfkey_exit_proc(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -3798,7 +3843,7 @@ static struct xfrm_mgr pfkeyv2_mgr =
|
||||
static void __exit ipsec_pfkey_exit(void)
|
||||
{
|
||||
xfrm_unregister_km(&pfkeyv2_mgr);
|
||||
remove_proc_entry("pfkey", init_net.proc_net);
|
||||
pfkey_exit_proc();
|
||||
sock_unregister(PF_KEY);
|
||||
proto_unregister(&key_proto);
|
||||
}
|
||||
@ -3813,21 +3858,17 @@ static int __init ipsec_pfkey_init(void)
|
||||
err = sock_register(&pfkey_family_ops);
|
||||
if (err != 0)
|
||||
goto out_unregister_key_proto;
|
||||
#ifdef CONFIG_PROC_FS
|
||||
err = -ENOMEM;
|
||||
if (create_proc_read_entry("pfkey", 0, init_net.proc_net, pfkey_read_proc, NULL) == NULL)
|
||||
err = pfkey_init_proc();
|
||||
if (err != 0)
|
||||
goto out_sock_unregister;
|
||||
#endif
|
||||
err = xfrm_register_km(&pfkeyv2_mgr);
|
||||
if (err != 0)
|
||||
goto out_remove_proc_entry;
|
||||
out:
|
||||
return err;
|
||||
out_remove_proc_entry:
|
||||
#ifdef CONFIG_PROC_FS
|
||||
remove_proc_entry("net/pfkey", NULL);
|
||||
pfkey_exit_proc();
|
||||
out_sock_unregister:
|
||||
#endif
|
||||
sock_unregister(PF_KEY);
|
||||
out_unregister_key_proto:
|
||||
proto_unregister(&key_proto);
|
||||
|
@ -687,8 +687,8 @@ static inline struct meta_type_ops * meta_type_ops(struct meta_value *v)
|
||||
* Core
|
||||
**************************************************************************/
|
||||
|
||||
static inline int meta_get(struct sk_buff *skb, struct tcf_pkt_info *info,
|
||||
struct meta_value *v, struct meta_obj *dst)
|
||||
static int meta_get(struct sk_buff *skb, struct tcf_pkt_info *info,
|
||||
struct meta_value *v, struct meta_obj *dst)
|
||||
{
|
||||
int err = 0;
|
||||
|
||||
@ -733,7 +733,7 @@ static int em_meta_match(struct sk_buff *skb, struct tcf_ematch *m,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void meta_delete(struct meta_match *meta)
|
||||
static void meta_delete(struct meta_match *meta)
|
||||
{
|
||||
if (meta) {
|
||||
struct meta_type_ops *ops = meta_type_ops(&meta->lvalue);
|
||||
|
@ -312,10 +312,9 @@ int tcf_em_tree_validate(struct tcf_proto *tp, struct nlattr *nla,
|
||||
struct tcf_ematch_tree_hdr *tree_hdr;
|
||||
struct tcf_ematch *em;
|
||||
|
||||
if (!nla) {
|
||||
memset(tree, 0, sizeof(*tree));
|
||||
memset(tree, 0, sizeof(*tree));
|
||||
if (!nla)
|
||||
return 0;
|
||||
}
|
||||
|
||||
err = nla_parse_nested(tb, TCA_EMATCH_TREE_MAX, nla, em_policy);
|
||||
if (err < 0)
|
||||
@ -410,14 +409,15 @@ void tcf_em_tree_destroy(struct tcf_proto *tp, struct tcf_ematch_tree *tree)
|
||||
if (em->ops) {
|
||||
if (em->ops->destroy)
|
||||
em->ops->destroy(tp, em);
|
||||
else if (!tcf_em_is_simple(em) && em->data)
|
||||
kfree((void *) em->data);
|
||||
else if (!tcf_em_is_simple(em))
|
||||
kfree(em->data);
|
||||
module_put(em->ops->owner);
|
||||
}
|
||||
}
|
||||
|
||||
tree->hdr.nmatches = 0;
|
||||
kfree(tree->matches);
|
||||
tree->matches = NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(tcf_em_tree_destroy);
|
||||
|
||||
|
@ -609,14 +609,14 @@ static int htb_enqueue(struct sk_buff *skb, struct Qdisc *sch)
|
||||
/* TODO: requeuing packet charges it to policers again !! */
|
||||
static int htb_requeue(struct sk_buff *skb, struct Qdisc *sch)
|
||||
{
|
||||
int ret;
|
||||
struct htb_sched *q = qdisc_priv(sch);
|
||||
int ret = NET_XMIT_SUCCESS;
|
||||
struct htb_class *cl = htb_classify(skb, sch, &ret);
|
||||
struct sk_buff *tskb;
|
||||
|
||||
if (cl == HTB_DIRECT || !cl) {
|
||||
if (cl == HTB_DIRECT) {
|
||||
/* enqueue to helper queue */
|
||||
if (q->direct_queue.qlen < q->direct_qlen && cl) {
|
||||
if (q->direct_queue.qlen < q->direct_qlen) {
|
||||
__skb_queue_head(&q->direct_queue, skb);
|
||||
} else {
|
||||
__skb_queue_head(&q->direct_queue, skb);
|
||||
@ -625,6 +625,13 @@ static int htb_requeue(struct sk_buff *skb, struct Qdisc *sch)
|
||||
sch->qstats.drops++;
|
||||
return NET_XMIT_CN;
|
||||
}
|
||||
#ifdef CONFIG_NET_CLS_ACT
|
||||
} else if (!cl) {
|
||||
if (ret == NET_XMIT_BYPASS)
|
||||
sch->qstats.drops++;
|
||||
kfree_skb(skb);
|
||||
return ret;
|
||||
#endif
|
||||
} else if (cl->un.leaf.q->ops->requeue(skb, cl->un.leaf.q) !=
|
||||
NET_XMIT_SUCCESS) {
|
||||
sch->qstats.drops++;
|
||||
|
@ -1,21 +1,21 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* (C) Copyright IBM Corp. 2001, 2004
|
||||
* Copyright (c) 1999-2000 Cisco, Inc.
|
||||
* Copyright (c) 1999-2001 Motorola, Inc.
|
||||
* Copyright (c) 2001 Intel Corp.
|
||||
* Copyright (c) 2001 La Monte H.P. Yarroll
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* This module provides the abstraction for an SCTP association.
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
@ -1525,7 +1525,7 @@ struct sctp_chunk *sctp_assoc_lookup_asconf_ack(
|
||||
const struct sctp_association *asoc,
|
||||
__be32 serial)
|
||||
{
|
||||
struct sctp_chunk *ack = NULL;
|
||||
struct sctp_chunk *ack;
|
||||
|
||||
/* Walk through the list of cached ASCONF-ACKs and find the
|
||||
* ack chunk whose serial number matches that of the request.
|
||||
@ -1533,9 +1533,9 @@ struct sctp_chunk *sctp_assoc_lookup_asconf_ack(
|
||||
list_for_each_entry(ack, &asoc->asconf_ack_list, transmitted_list) {
|
||||
if (ack->subh.addip_hdr->serial == serial) {
|
||||
sctp_chunk_hold(ack);
|
||||
break;
|
||||
return ack;
|
||||
}
|
||||
}
|
||||
|
||||
return ack;
|
||||
return NULL;
|
||||
}
|
||||
|
@ -1,15 +1,15 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* (C) Copyright 2007 Hewlett-Packard Development Company, L.P.
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -1,20 +1,20 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* (C) Copyright IBM Corp. 2001, 2003
|
||||
* Copyright (c) Cisco 1999,2000
|
||||
* Copyright (c) Motorola 1999,2000,2001
|
||||
* Copyright (c) La Monte H.P. Yarroll 2001
|
||||
*
|
||||
* This file is part of the SCTP kernel reference implementation.
|
||||
* This file is part of the SCTP kernel implementation.
|
||||
*
|
||||
* A collection class to handle the storage of transport addresses.
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -1,17 +1,17 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* (C) Copyright IBM Corp. 2003, 2004
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* This file contains the code relating the chunk abstraction.
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -1,18 +1,18 @@
|
||||
/* SCTP kernel reference Implementation Copyright (C) 1999-2001
|
||||
/* SCTP kernel implementation Copyright (C) 1999-2001
|
||||
* Cisco, Motorola, and IBM
|
||||
* Copyright 2001 La Monte H.P. Yarroll
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* These functions manipulate sctp command sequences.
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -1,25 +1,21 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* (C) Copyright IBM Corp. 2001, 2004
|
||||
* Copyright (c) 1999-2000 Cisco, Inc.
|
||||
* Copyright (c) 1999-2001 Motorola, Inc.
|
||||
* Copyright (c) 2001 Intel Corp.
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
*
|
||||
* This file is part of the implementation of the add-IP extension,
|
||||
* based on <draft-ietf-tsvwg-addip-sctp-02.txt> June 29, 2001,
|
||||
* for the SCTP kernel reference Implementation.
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* This file converts numerical ID value to alphabetical names for SCTP
|
||||
* terms such as chunk type, parameter time, event type, etc.
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* Copyright (c) 1999-2000 Cisco, Inc.
|
||||
* Copyright (c) 1999-2001 Motorola, Inc.
|
||||
* Copyright (c) 2001-2002 International Business Machines, Corp.
|
||||
@ -6,21 +6,17 @@
|
||||
* Copyright (c) 2001 Nokia, Inc.
|
||||
* Copyright (c) 2001 La Monte H.P. Yarroll
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* This abstraction represents an SCTP endpoint.
|
||||
*
|
||||
* This file is part of the implementation of the add-IP extension,
|
||||
* based on <draft-ietf-tsvwg-addip-sctp-02.txt> June 29, 2001,
|
||||
* for the SCTP kernel reference Implementation.
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* The SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* The SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* Copyright (c) 1999-2000 Cisco, Inc.
|
||||
* Copyright (c) 1999-2001 Motorola, Inc.
|
||||
* Copyright (c) 2001-2003 International Business Machines, Corp.
|
||||
@ -6,17 +6,17 @@
|
||||
* Copyright (c) 2001 Nokia, Inc.
|
||||
* Copyright (c) 2001 La Monte H.P. Yarroll
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* These functions handle all input from the IP layer into SCTP.
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -1,9 +1,9 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* Copyright (c) 1999-2000 Cisco, Inc.
|
||||
* Copyright (c) 1999-2001 Motorola, Inc.
|
||||
* Copyright (c) 2002 International Business Machines, Corp.
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* These functions are the methods for accessing the SCTP inqueue.
|
||||
*
|
||||
@ -11,13 +11,13 @@
|
||||
* (which might be bundles or fragments of chunks) and out of which you
|
||||
* pop SCTP whole chunks.
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -1,20 +1,20 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* (C) Copyright IBM Corp. 2002, 2004
|
||||
* Copyright (c) 2001 Nokia, Inc.
|
||||
* Copyright (c) 2001 La Monte H.P. Yarroll
|
||||
* Copyright (c) 2002-2003 Intel Corp.
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* SCTP over IPv6.
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -1,19 +1,19 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* (C) Copyright IBM Corp. 2001, 2004
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* Support for memory object debugging. This allows one to monitor the
|
||||
* object allocations/deallocations for types instrumented for this
|
||||
* via the proc fs.
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
@ -80,61 +80,64 @@ static sctp_dbg_objcnt_entry_t sctp_dbg_objcnt[] = {
|
||||
/* Callback from procfs to read out objcount information.
|
||||
* Walk through the entries in the sctp_dbg_objcnt array, dumping
|
||||
* the raw object counts for each monitored type.
|
||||
*
|
||||
* This code was modified from similar code in route.c
|
||||
*/
|
||||
static int sctp_dbg_objcnt_read(char *buffer, char **start, off_t offset,
|
||||
int length, int *eof, void *data)
|
||||
static int sctp_objcnt_seq_show(struct seq_file *seq, void *v)
|
||||
{
|
||||
int len = 0;
|
||||
off_t pos = 0;
|
||||
int entries;
|
||||
int i;
|
||||
char temp[128];
|
||||
|
||||
/* How many entries? */
|
||||
entries = ARRAY_SIZE(sctp_dbg_objcnt);
|
||||
|
||||
/* Walk the entries and print out the debug information
|
||||
* for proc fs.
|
||||
*/
|
||||
for (i = 0; i < entries; i++) {
|
||||
pos += 128;
|
||||
|
||||
/* Skip ahead. */
|
||||
if (pos <= offset) {
|
||||
len = 0;
|
||||
continue;
|
||||
}
|
||||
/* Print out each entry. */
|
||||
sprintf(temp, "%s: %d",
|
||||
sctp_dbg_objcnt[i].label,
|
||||
atomic_read(sctp_dbg_objcnt[i].counter));
|
||||
|
||||
sprintf(buffer + len, "%-127s\n", temp);
|
||||
len += 128;
|
||||
if (pos >= offset+length)
|
||||
goto done;
|
||||
}
|
||||
|
||||
done:
|
||||
*start = buffer + len - (pos - offset);
|
||||
len = pos - offset;
|
||||
if (len > length)
|
||||
len = length;
|
||||
|
||||
return len;
|
||||
i = (int)*(loff_t *)v;
|
||||
sprintf(temp, "%s: %d", sctp_dbg_objcnt[i].label,
|
||||
atomic_read(sctp_dbg_objcnt[i].counter));
|
||||
seq_printf(seq, "%-127s\n", temp);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void *sctp_objcnt_seq_start(struct seq_file *seq, loff_t *pos)
|
||||
{
|
||||
return (*pos >= ARRAY_SIZE(sctp_dbg_objcnt)) ? NULL : (void *)pos;
|
||||
}
|
||||
|
||||
static void sctp_objcnt_seq_stop(struct seq_file *seq, void *v)
|
||||
{
|
||||
}
|
||||
|
||||
static void * sctp_objcnt_seq_next(struct seq_file *seq, void *v, loff_t *pos)
|
||||
{
|
||||
++*pos;
|
||||
return (*pos >= ARRAY_SIZE(sctp_dbg_objcnt)) ? NULL : (void *)pos;
|
||||
}
|
||||
|
||||
static const struct seq_operations sctp_objcnt_seq_ops = {
|
||||
.start = sctp_objcnt_seq_start,
|
||||
.next = sctp_objcnt_seq_next,
|
||||
.stop = sctp_objcnt_seq_stop,
|
||||
.show = sctp_objcnt_seq_show,
|
||||
};
|
||||
|
||||
static int sctp_objcnt_seq_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open(file, &sctp_objcnt_seq_ops);
|
||||
}
|
||||
|
||||
static const struct file_operations sctp_objcnt_ops = {
|
||||
.open = sctp_objcnt_seq_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
|
||||
/* Initialize the objcount in the proc filesystem. */
|
||||
void sctp_dbg_objcnt_init(void)
|
||||
{
|
||||
struct proc_dir_entry *ent;
|
||||
ent = create_proc_read_entry("sctp_dbg_objcnt", 0, proc_net_sctp,
|
||||
sctp_dbg_objcnt_read, NULL);
|
||||
|
||||
ent = create_proc_entry("sctp_dbg_objcnt", 0, proc_net_sctp);
|
||||
if (!ent)
|
||||
printk(KERN_WARNING
|
||||
"sctp_dbg_objcnt: Unable to create /proc entry.\n");
|
||||
else
|
||||
ent->proc_fops = &sctp_objcnt_ops;
|
||||
}
|
||||
|
||||
/* Cleanup the objcount entry in the proc filesystem. */
|
||||
|
@ -1,19 +1,19 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* (C) Copyright IBM Corp. 2001, 2004
|
||||
* Copyright (c) 1999-2000 Cisco, Inc.
|
||||
* Copyright (c) 1999-2001 Motorola, Inc.
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* These functions handle output processing.
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -1,21 +1,21 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* (C) Copyright IBM Corp. 2001, 2004
|
||||
* Copyright (c) 1999-2000 Cisco, Inc.
|
||||
* Copyright (c) 1999-2001 Motorola, Inc.
|
||||
* Copyright (c) 2001-2003 Intel Corp.
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* These functions implement the sctp_outq class. The outqueue handles
|
||||
* bundling and queueing of outgoing SCTP chunks.
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
@ -1179,8 +1179,10 @@ int sctp_outq_sack(struct sctp_outq *q, struct sctp_sackhdr *sack)
|
||||
tchunk = list_entry(lchunk, struct sctp_chunk,
|
||||
transmitted_list);
|
||||
tsn = ntohl(tchunk->subh.data_hdr->tsn);
|
||||
if (TSN_lte(tsn, ctsn))
|
||||
if (TSN_lte(tsn, ctsn)) {
|
||||
list_del_init(&tchunk->transmitted_list);
|
||||
sctp_chunk_free(tchunk);
|
||||
}
|
||||
}
|
||||
|
||||
/* ii) Set rwnd equal to the newly received a_rwnd minus the
|
||||
|
@ -1,8 +1,8 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* Copyright (c) 1999-2000 Cisco, Inc.
|
||||
* Copyright (c) 1999-2001 Motorola, Inc.
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* These functions implement the SCTP primitive functions from Section 10.
|
||||
*
|
||||
@ -10,13 +10,13 @@
|
||||
* functions--this file is the functions which populate the struct proto
|
||||
* for SCTP which is the BOTTOM of the sockets interface.
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -1,15 +1,15 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* Copyright (c) 2003 International Business Machines, Corp.
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
@ -38,6 +38,7 @@
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/init.h>
|
||||
#include <net/sctp/sctp.h>
|
||||
#include <net/ip.h> /* for snmp_fold_field */
|
||||
|
||||
static struct snmp_mib sctp_snmp_list[] = {
|
||||
SNMP_MIB_ITEM("SctpCurrEstab", SCTP_MIB_CURRESTAB),
|
||||
@ -75,26 +76,6 @@ static struct snmp_mib sctp_snmp_list[] = {
|
||||
SNMP_MIB_SENTINEL
|
||||
};
|
||||
|
||||
/* Return the current value of a particular entry in the mib by adding its
|
||||
* per cpu counters.
|
||||
*/
|
||||
static unsigned long
|
||||
fold_field(void *mib[], int nr)
|
||||
{
|
||||
unsigned long res = 0;
|
||||
int i;
|
||||
|
||||
for_each_possible_cpu(i) {
|
||||
res +=
|
||||
*((unsigned long *) (((void *) per_cpu_ptr(mib[0], i)) +
|
||||
sizeof (unsigned long) * nr));
|
||||
res +=
|
||||
*((unsigned long *) (((void *) per_cpu_ptr(mib[1], i)) +
|
||||
sizeof (unsigned long) * nr));
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
/* Display sctp snmp mib statistics(/proc/net/sctp/snmp). */
|
||||
static int sctp_snmp_seq_show(struct seq_file *seq, void *v)
|
||||
{
|
||||
@ -102,7 +83,7 @@ static int sctp_snmp_seq_show(struct seq_file *seq, void *v)
|
||||
|
||||
for (i = 0; sctp_snmp_list[i].name != NULL; i++)
|
||||
seq_printf(seq, "%-32s\t%ld\n", sctp_snmp_list[i].name,
|
||||
fold_field((void **)sctp_statistics,
|
||||
snmp_fold_field((void **)sctp_statistics,
|
||||
sctp_snmp_list[i].entry));
|
||||
|
||||
return 0;
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* (C) Copyright IBM Corp. 2001, 2004
|
||||
* Copyright (c) 1999-2000 Cisco, Inc.
|
||||
* Copyright (c) 1999-2001 Motorola, Inc.
|
||||
@ -6,17 +6,17 @@
|
||||
* Copyright (c) 2001 Nokia, Inc.
|
||||
* Copyright (c) 2001 La Monte H.P. Yarroll
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* Initialization/cleanup for SCTP protocol support.
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* (C) Copyright IBM Corp. 2001, 2004
|
||||
* Copyright (c) 1999-2000 Cisco, Inc.
|
||||
* Copyright (c) 1999-2001 Motorola, Inc.
|
||||
* Copyright (c) 2001-2002 Intel Corp.
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* These functions work with the state functions in sctp_sm_statefuns.c
|
||||
* to implement the state operations. These functions implement the
|
||||
* steps which require modifying existing data structures.
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
@ -3224,6 +3224,7 @@ int sctp_process_asconf_ack(struct sctp_association *asoc,
|
||||
}
|
||||
|
||||
/* Free the cached last sent asconf chunk. */
|
||||
list_del_init(&asconf->transmitted_list);
|
||||
sctp_chunk_free(asconf);
|
||||
asoc->addip_last_asconf = NULL;
|
||||
|
||||
|
@ -1,21 +1,21 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* (C) Copyright IBM Corp. 2001, 2004
|
||||
* Copyright (c) 1999 Cisco, Inc.
|
||||
* Copyright (c) 1999-2001 Motorola, Inc.
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* These functions work with the state functions in sctp_sm_statefuns.c
|
||||
* to implement that state operations. These functions implement the
|
||||
* steps which require modifying existing data structures.
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -1,23 +1,21 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* (C) Copyright IBM Corp. 2001, 2004
|
||||
* Copyright (c) 1999-2000 Cisco, Inc.
|
||||
* Copyright (c) 1999-2001 Motorola, Inc.
|
||||
* Copyright (c) 2001-2002 Intel Corp.
|
||||
* Copyright (c) 2002 Nokia Corp.
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
*
|
||||
* This is part of the SCTP Linux Kernel Reference Implementation.
|
||||
* This is part of the SCTP Linux Kernel Implementation.
|
||||
*
|
||||
* These are the state functions for the state machine.
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -1,21 +1,21 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* (C) Copyright IBM Corp. 2001, 2004
|
||||
* Copyright (c) 1999-2000 Cisco, Inc.
|
||||
* Copyright (c) 1999-2001 Motorola, Inc.
|
||||
* Copyright (c) 2001 Intel Corp.
|
||||
* Copyright (c) 2001 Nokia, Inc.
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* These are the state tables for the SCTP state machine.
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* (C) Copyright IBM Corp. 2001, 2004
|
||||
* Copyright (c) 1999-2000 Cisco, Inc.
|
||||
* Copyright (c) 1999-2001 Motorola, Inc.
|
||||
@ -6,7 +6,7 @@
|
||||
* Copyright (c) 2001-2002 Nokia, Inc.
|
||||
* Copyright (c) 2001 La Monte H.P. Yarroll
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* These functions interface with the sockets layer to implement the
|
||||
* SCTP Extensions for the Sockets API.
|
||||
@ -15,13 +15,13 @@
|
||||
* functions--this file is the functions which populate the struct proto
|
||||
* for SCTP which is the BOTTOM of the sockets interface.
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
@ -1911,7 +1911,8 @@ SCTP_STATIC int sctp_recvmsg(struct kiocb *iocb, struct sock *sk,
|
||||
* rwnd by that amount. If all the data in the skb is read,
|
||||
* rwnd is updated when the event is freed.
|
||||
*/
|
||||
sctp_assoc_rwnd_increase(event->asoc, copied);
|
||||
if (!sctp_ulpevent_is_notification(event))
|
||||
sctp_assoc_rwnd_increase(event->asoc, copied);
|
||||
goto out;
|
||||
} else if ((event->msg_flags & MSG_NOTIFICATION) ||
|
||||
(event->msg_flags & MSG_EOR))
|
||||
@ -4314,6 +4315,9 @@ static int sctp_copy_laddrs_old(struct sock *sk, __u16 port,
|
||||
(AF_INET6 == addr->a.sa.sa_family))
|
||||
continue;
|
||||
memcpy(&temp, &addr->a, sizeof(temp));
|
||||
if (!temp.v4.sin_port)
|
||||
temp.v4.sin_port = htons(port);
|
||||
|
||||
sctp_get_pf_specific(sk->sk_family)->addr_v4map(sctp_sk(sk),
|
||||
&temp);
|
||||
addrlen = sctp_get_af_specific(temp.sa.sa_family)->sockaddr_len;
|
||||
@ -4346,6 +4350,9 @@ static int sctp_copy_laddrs(struct sock *sk, __u16 port, void *to,
|
||||
(AF_INET6 == addr->a.sa.sa_family))
|
||||
continue;
|
||||
memcpy(&temp, &addr->a, sizeof(temp));
|
||||
if (!temp.v4.sin_port)
|
||||
temp.v4.sin_port = htons(port);
|
||||
|
||||
sctp_get_pf_specific(sk->sk_family)->addr_v4map(sctp_sk(sk),
|
||||
&temp);
|
||||
addrlen = sctp_get_af_specific(temp.sa.sa_family)->sockaddr_len;
|
||||
|
@ -1,17 +1,17 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* Copyright (c) 2003 International Business Machines, Corp.
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* These functions manipulate sctp SSN tracker.
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -1,18 +1,18 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* (C) Copyright IBM Corp. 2002, 2004
|
||||
* Copyright (c) 2002 Intel Corp.
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* Sysctl related interfaces for SCTP.
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -1,23 +1,23 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* Copyright (c) 1999-2000 Cisco, Inc.
|
||||
* Copyright (c) 1999-2001 Motorola, Inc.
|
||||
* Copyright (c) 2001-2003 International Business Machines Corp.
|
||||
* Copyright (c) 2001 Intel Corp.
|
||||
* Copyright (c) 2001 La Monte H.P. Yarroll
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* This module provides the abstraction for an SCTP tranport representing
|
||||
* a remote transport address. For local transport addresses, we just use
|
||||
* union sctp_addr.
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -1,20 +1,20 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* (C) Copyright IBM Corp. 2001, 2004
|
||||
* Copyright (c) 1999-2000 Cisco, Inc.
|
||||
* Copyright (c) 1999-2001 Motorola, Inc.
|
||||
* Copyright (c) 2001 Intel Corp.
|
||||
*
|
||||
* This file is part of the SCTP kernel reference Implementation
|
||||
* This file is part of the SCTP kernel implementation
|
||||
*
|
||||
* These functions manipulate sctp tsn mapping array.
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* (C) Copyright IBM Corp. 2001, 2004
|
||||
* Copyright (c) 1999-2000 Cisco, Inc.
|
||||
* Copyright (c) 1999-2001 Motorola, Inc.
|
||||
@ -8,13 +8,14 @@
|
||||
*
|
||||
* These functions manipulate an sctp event. The struct ulpevent is used
|
||||
* to carry notifications and data to the ULP (sockets).
|
||||
* The SCTP reference implementation is free software;
|
||||
*
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* SCTP kernel reference Implementation
|
||||
/* SCTP kernel implementation
|
||||
* (C) Copyright IBM Corp. 2001, 2004
|
||||
* Copyright (c) 1999-2000 Cisco, Inc.
|
||||
* Copyright (c) 1999-2001 Motorola, Inc.
|
||||
@ -8,13 +8,13 @@
|
||||
*
|
||||
* This abstraction carries sctp events to the ULP (sockets).
|
||||
*
|
||||
* The SCTP reference implementation is free software;
|
||||
* This SCTP implementation is free software;
|
||||
* you can redistribute it and/or modify it under the terms of
|
||||
* the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* The SCTP reference implementation is distributed in the hope that it
|
||||
* This SCTP implementation is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* ************************
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
@ -283,7 +283,7 @@ out_free:
|
||||
/* 2nd Level Abstractions */
|
||||
|
||||
/* Helper function to store chunks that need to be reassembled. */
|
||||
static inline void sctp_ulpq_store_reasm(struct sctp_ulpq *ulpq,
|
||||
static void sctp_ulpq_store_reasm(struct sctp_ulpq *ulpq,
|
||||
struct sctp_ulpevent *event)
|
||||
{
|
||||
struct sk_buff *pos;
|
||||
@ -405,7 +405,7 @@ static struct sctp_ulpevent *sctp_make_reassembled_event(struct sk_buff_head *qu
|
||||
/* Helper function to check if an incoming chunk has filled up the last
|
||||
* missing fragment in a SCTP datagram and return the corresponding event.
|
||||
*/
|
||||
static inline struct sctp_ulpevent *sctp_ulpq_retrieve_reassembled(struct sctp_ulpq *ulpq)
|
||||
static struct sctp_ulpevent *sctp_ulpq_retrieve_reassembled(struct sctp_ulpq *ulpq)
|
||||
{
|
||||
struct sk_buff *pos;
|
||||
struct sctp_ulpevent *cevent;
|
||||
@ -512,7 +512,7 @@ found:
|
||||
}
|
||||
|
||||
/* Retrieve the next set of fragments of a partial message. */
|
||||
static inline struct sctp_ulpevent *sctp_ulpq_retrieve_partial(struct sctp_ulpq *ulpq)
|
||||
static struct sctp_ulpevent *sctp_ulpq_retrieve_partial(struct sctp_ulpq *ulpq)
|
||||
{
|
||||
struct sk_buff *pos, *last_frag, *first_frag;
|
||||
struct sctp_ulpevent *cevent;
|
||||
@ -606,7 +606,7 @@ static struct sctp_ulpevent *sctp_ulpq_reasm(struct sctp_ulpq *ulpq,
|
||||
}
|
||||
|
||||
/* Retrieve the first part (sequential fragments) for partial delivery. */
|
||||
static inline struct sctp_ulpevent *sctp_ulpq_retrieve_first(struct sctp_ulpq *ulpq)
|
||||
static struct sctp_ulpevent *sctp_ulpq_retrieve_first(struct sctp_ulpq *ulpq)
|
||||
{
|
||||
struct sk_buff *pos, *last_frag, *first_frag;
|
||||
struct sctp_ulpevent *cevent;
|
||||
@ -735,7 +735,7 @@ static void sctp_ulpq_reasm_drain(struct sctp_ulpq *ulpq)
|
||||
/* Helper function to gather skbs that have possibly become
|
||||
* ordered by an an incoming chunk.
|
||||
*/
|
||||
static inline void sctp_ulpq_retrieve_ordered(struct sctp_ulpq *ulpq,
|
||||
static void sctp_ulpq_retrieve_ordered(struct sctp_ulpq *ulpq,
|
||||
struct sctp_ulpevent *event)
|
||||
{
|
||||
struct sk_buff_head *event_list;
|
||||
@ -779,7 +779,7 @@ static inline void sctp_ulpq_retrieve_ordered(struct sctp_ulpq *ulpq,
|
||||
}
|
||||
|
||||
/* Helper function to store chunks needing ordering. */
|
||||
static inline void sctp_ulpq_store_ordered(struct sctp_ulpq *ulpq,
|
||||
static void sctp_ulpq_store_ordered(struct sctp_ulpq *ulpq,
|
||||
struct sctp_ulpevent *event)
|
||||
{
|
||||
struct sk_buff *pos;
|
||||
@ -867,13 +867,14 @@ static struct sctp_ulpevent *sctp_ulpq_order(struct sctp_ulpq *ulpq,
|
||||
/* Helper function to gather skbs that have possibly become
|
||||
* ordered by forward tsn skipping their dependencies.
|
||||
*/
|
||||
static inline void sctp_ulpq_reap_ordered(struct sctp_ulpq *ulpq, __u16 sid)
|
||||
static void sctp_ulpq_reap_ordered(struct sctp_ulpq *ulpq, __u16 sid)
|
||||
{
|
||||
struct sk_buff *pos, *tmp;
|
||||
struct sctp_ulpevent *cevent;
|
||||
struct sctp_ulpevent *event;
|
||||
struct sctp_stream *in;
|
||||
struct sk_buff_head temp;
|
||||
struct sk_buff_head *lobby = &ulpq->lobby;
|
||||
__u16 csid, cssn;
|
||||
|
||||
in = &ulpq->asoc->ssnmap->in;
|
||||
@ -881,7 +882,7 @@ static inline void sctp_ulpq_reap_ordered(struct sctp_ulpq *ulpq, __u16 sid)
|
||||
/* We are holding the chunks by stream, by SSN. */
|
||||
skb_queue_head_init(&temp);
|
||||
event = NULL;
|
||||
sctp_skb_for_each(pos, &ulpq->lobby, tmp) {
|
||||
sctp_skb_for_each(pos, lobby, tmp) {
|
||||
cevent = (struct sctp_ulpevent *) pos->cb;
|
||||
csid = cevent->stream;
|
||||
cssn = cevent->ssn;
|
||||
@ -895,10 +896,10 @@ static inline void sctp_ulpq_reap_ordered(struct sctp_ulpq *ulpq, __u16 sid)
|
||||
continue;
|
||||
|
||||
/* see if this ssn has been marked by skipping */
|
||||
if (!SSN_lte(cssn, sctp_ssn_peek(in, csid)))
|
||||
if (!SSN_lt(cssn, sctp_ssn_peek(in, csid)))
|
||||
break;
|
||||
|
||||
__skb_unlink(pos, &ulpq->lobby);
|
||||
__skb_unlink(pos, lobby);
|
||||
if (!event)
|
||||
/* Create a temporary list to collect chunks on. */
|
||||
event = sctp_skb2event(pos);
|
||||
@ -907,6 +908,22 @@ static inline void sctp_ulpq_reap_ordered(struct sctp_ulpq *ulpq, __u16 sid)
|
||||
__skb_queue_tail(&temp, pos);
|
||||
}
|
||||
|
||||
/* If we didn't reap any data, see if the next expected SSN
|
||||
* is next on the queue and if so, use that.
|
||||
*/
|
||||
if (event == NULL && pos != (struct sk_buff *)lobby) {
|
||||
cevent = (struct sctp_ulpevent *) pos->cb;
|
||||
csid = cevent->stream;
|
||||
cssn = cevent->ssn;
|
||||
|
||||
if (csid == sid && cssn == sctp_ssn_peek(in, csid)) {
|
||||
sctp_ssn_next(in, csid);
|
||||
__skb_unlink(pos, lobby);
|
||||
__skb_queue_tail(&temp, pos);
|
||||
event = sctp_skb2event(pos);
|
||||
}
|
||||
}
|
||||
|
||||
/* Send event to the ULP. 'event' is the sctp_ulpevent for
|
||||
* very first SKB on the 'temp' list.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user