···1-/* drivers/atm/atmdev_init.c - ATM device driver initialization */2-3-/* Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA */4-5-6-#include <linux/config.h>7-#include <linux/init.h>8-9-10-#ifdef CONFIG_ATM_ZATM11-extern int zatm_detect(void);12-#endif13-#ifdef CONFIG_ATM_AMBASSADOR14-extern int amb_detect(void);15-#endif16-#ifdef CONFIG_ATM_HORIZON17-extern int hrz_detect(void);18-#endif19-#ifdef CONFIG_ATM_FORE200E20-extern int fore200e_detect(void);21-#endif22-#ifdef CONFIG_ATM_LANAI23-extern int lanai_detect(void);24-#endif25-26-27-/*28- * For historical reasons, atmdev_init returns the number of devices found.29- * Note that some detections may not go via atmdev_init (e.g. eni.c), so this30- * number is meaningless.31- */32-33-int __init atmdev_init(void)34-{35- int devs;36-37- devs = 0;38-#ifdef CONFIG_ATM_ZATM39- devs += zatm_detect();40-#endif41-#ifdef CONFIG_ATM_AMBASSADOR42- devs += amb_detect();43-#endif44-#ifdef CONFIG_ATM_HORIZON45- devs += hrz_detect();46-#endif47-#ifdef CONFIG_ATM_FORE200E48- devs += fore200e_detect();49-#endif50-#ifdef CONFIG_ATM_LANAI51- devs += lanai_detect();52-#endif53- return devs;54-}
···39 * o lanai_change_qos() isn't written yet40 *41 * o There aren't any ioctl's yet -- I'd like to eventually support42- * setting loopback and LED modes that way. (see lanai_ioctl)43 *44 * o If the segmentation engine or DMA gets shut down we should restart45 * card as per section 17.0i. (see lanai_reset)···305 * vci with their bit set306 */307static void vci_bitfield_iterate(struct lanai_dev *lanai,308- /*const*/ unsigned long *lp,309 void (*func)(struct lanai_dev *,vci_t vci))310{311 vci_t vci = find_first_bit(lp, NUM_VCI);···951/* read a big-endian 4-byte value out of eeprom */952static inline u32 eeprom_be4(const struct lanai_dev *lanai, int address)953{954- return be32_to_cpup((u32 *) (&lanai->eeprom[address]));955}956957/* Checksum/validate EEPROM contents */···1160}11611162/* test if VCC is currently backlogged */1163-static inline int vcc_is_backlogged(/*const*/ struct lanai_vcc *lvcc)1164{1165 return !skb_queue_empty(&lvcc->tx.backlog);1166}···1395{1396 int size;1397 struct sk_buff *skb;1398- /*const*/ u32 *x, *end = &lvcc->rx.buf.start[endptr * 4];01399 int n = ((unsigned long) end) - ((unsigned long) lvcc->rx.buf.ptr);1400 if (n < 0)1401 n += lanai_buf_size(&lvcc->rx.buf);···2112 * shifted by that much as we compute2113 *2114 */2115-static int pcr_to_cbricg(/*const*/ struct atm_qos *qos)2116{2117 int rounddown = 0; /* 1 = Round PCR down, i.e. round ICG _up_ */2118 int x, icg, pcr = atm_pcr_goal(&qos->txtp);···2435 return result;2436}24372438-#if 02439-/* ioctl operations for card */2440-/* NOTE: these are all DEBUGGING ONLY currently */2441-static int lanai_ioctl(struct atm_dev *atmdev, unsigned int cmd, void __user *arg)2442-{2443- int result = 0;2444- struct lanai_dev *lanai = (struct lanai_dev *) atmdev->dev_data;2445- switch(cmd) {2446- case 2106275:2447- shutdown_atm_dev(atmdev);2448- return 0;2449- case 2200000: {2450- unsigned long flags;2451- spin_lock_irqsave(&lanai->servicelock, flags);2452- run_service(lanai);2453- spin_unlock_irqrestore(&lanai->servicelock, flags);2454- return 0; }2455- case 2200002:2456- get_statistics(lanai);2457- return 0;2458- case 2200003: {2459- unsigned int i;2460- for (i = 0; i <= 0x5C ; i += 4) {2461- if (i==0x48) /* Write-only butt reg */2462- continue;2463- printk(KERN_CRIT DEV_LABEL " 0x%02X: "2464- "0x%08X\n", i,2465- (unsigned int) readl(lanai->base + i));2466- barrier(); mb();2467- pcistatus_check(lanai, 0);2468- barrier(); mb();2469- }2470- return 0; }2471- case 2200004: {2472- u8 b;2473- u16 w;2474- u32 dw;2475- struct pci_dev *pci = lanai->pci;2476- (void) pci_read_config_word(pci, PCI_VENDOR_ID, &w);2477- DPRINTK("vendor = 0x%X\n", (unsigned int) w);2478- (void) pci_read_config_word(pci, PCI_DEVICE_ID, &w);2479- DPRINTK("device = 0x%X\n", (unsigned int) w);2480- (void) pci_read_config_word(pci, PCI_COMMAND, &w);2481- DPRINTK("command = 0x%X\n", (unsigned int) w);2482- (void) pci_read_config_word(pci, PCI_STATUS, &w);2483- DPRINTK("status = 0x%X\n", (unsigned int) w);2484- (void) pci_read_config_dword(pci,2485- PCI_CLASS_REVISION, &dw);2486- DPRINTK("class/revision = 0x%X\n", (unsigned int) dw);2487- (void) pci_read_config_byte(pci,2488- PCI_CACHE_LINE_SIZE, &b);2489- DPRINTK("cache line size = 0x%X\n", (unsigned int) b);2490- (void) pci_read_config_byte(pci, PCI_LATENCY_TIMER, &b);2491- DPRINTK("latency = %d (0x%X)\n",2492- (int) b, (unsigned int) b);2493- (void) pci_read_config_byte(pci, PCI_HEADER_TYPE, &b);2494- DPRINTK("header type = 0x%X\n", (unsigned int) b);2495- (void) pci_read_config_byte(pci, PCI_BIST, &b);2496- DPRINTK("bist = 0x%X\n", (unsigned int) b);2497- /* skipping a few here */2498- (void) pci_read_config_byte(pci,2499- PCI_INTERRUPT_LINE, &b);2500- DPRINTK("pci_int_line = 0x%X\n", (unsigned int) b);2501- (void) pci_read_config_byte(pci,2502- PCI_INTERRUPT_PIN, &b);2503- DPRINTK("pci_int_pin = 0x%X\n", (unsigned int) b);2504- (void) pci_read_config_byte(pci, PCI_MIN_GNT, &b);2505- DPRINTK("min_gnt = 0x%X\n", (unsigned int) b);2506- (void) pci_read_config_byte(pci, PCI_MAX_LAT, &b);2507- DPRINTK("max_lat = 0x%X\n", (unsigned int) b); }2508- return 0;2509-#ifdef USE_POWERDOWN2510- case 2200005:2511- DPRINTK("Coming out of powerdown\n");2512- lanai->conf1 &= ~CONFIG1_POWERDOWN;2513- conf1_write(lanai);2514- return 0;2515-#endif2516- default:2517- result = -ENOIOCTLCMD;2518- }2519- return result;2520-}2521-#else /* !0 */2522-#define lanai_ioctl NULL2523-#endif /* 0 */2524-2525static int lanai_send(struct atm_vcc *atmvcc, struct sk_buff *skb)2526{2527 struct lanai_vcc *lvcc = (struct lanai_vcc *) atmvcc->dev_data;···2592 .dev_close = lanai_dev_close,2593 .open = lanai_open,2594 .close = lanai_close,2595- .ioctl = lanai_ioctl,2596 .getsockopt = NULL,2597 .setsockopt = NULL,2598 .send = lanai_send,···2673 * gone, so there isn't much to do2674 */2675 DPRINTK("cleanup_module()\n");02676}26772678module_init(lanai_module_init);
···39 * o lanai_change_qos() isn't written yet40 *41 * o There aren't any ioctl's yet -- I'd like to eventually support42+ * setting loopback and LED modes that way.43 *44 * o If the segmentation engine or DMA gets shut down we should restart45 * card as per section 17.0i. (see lanai_reset)···305 * vci with their bit set306 */307static void vci_bitfield_iterate(struct lanai_dev *lanai,308+ const unsigned long *lp,309 void (*func)(struct lanai_dev *,vci_t vci))310{311 vci_t vci = find_first_bit(lp, NUM_VCI);···951/* read a big-endian 4-byte value out of eeprom */952static inline u32 eeprom_be4(const struct lanai_dev *lanai, int address)953{954+ return be32_to_cpup((const u32 *) &lanai->eeprom[address]);955}956957/* Checksum/validate EEPROM contents */···1160}11611162/* test if VCC is currently backlogged */1163+static inline int vcc_is_backlogged(const struct lanai_vcc *lvcc)1164{1165 return !skb_queue_empty(&lvcc->tx.backlog);1166}···1395{1396 int size;1397 struct sk_buff *skb;1398+ const u32 *x;1399+ u32 *end = &lvcc->rx.buf.start[endptr * 4];1400 int n = ((unsigned long) end) - ((unsigned long) lvcc->rx.buf.ptr);1401 if (n < 0)1402 n += lanai_buf_size(&lvcc->rx.buf);···2111 * shifted by that much as we compute2112 *2113 */2114+static int pcr_to_cbricg(const struct atm_qos *qos)2115{2116 int rounddown = 0; /* 1 = Round PCR down, i.e. round ICG _up_ */2117 int x, icg, pcr = atm_pcr_goal(&qos->txtp);···2434 return result;2435}24360000000000000000000000000000000000000000000000000000000000000000000000000000000000000002437static int lanai_send(struct atm_vcc *atmvcc, struct sk_buff *skb)2438{2439 struct lanai_vcc *lvcc = (struct lanai_vcc *) atmvcc->dev_data;···2678 .dev_close = lanai_dev_close,2679 .open = lanai_open,2680 .close = lanai_close,02681 .getsockopt = NULL,2682 .setsockopt = NULL,2683 .send = lanai_send,···2760 * gone, so there isn't much to do2761 */2762 DPRINTK("cleanup_module()\n");2763+ pci_unregister_driver(&lanai_driver);2764}27652766module_init(lanai_module_init);
+2-2
drivers/usb/atm/usbatm.c
···879880 fail:881 instance->atm_dev = NULL;882- shutdown_atm_dev(atm_dev); /* usbatm_atm_dev_close will eventually be called */883 return ret;884}885···11641165 /* ATM finalize */1166 if (instance->atm_dev)1167- shutdown_atm_dev(instance->atm_dev);11681169 usbatm_put_instance(instance); /* taken in usbatm_usb_probe */1170}
···879880 fail:881 instance->atm_dev = NULL;882+ atm_dev_deregister(atm_dev); /* usbatm_atm_dev_close will eventually be called */883 return ret;884}885···11641165 /* ATM finalize */1166 if (instance->atm_dev)1167+ atm_dev_deregister(instance->atm_dev);11681169 usbatm_put_instance(instance); /* taken in usbatm_usb_probe */1170}
+9-9
include/linux/atmdev.h
···7#define LINUX_ATMDEV_H8910-#include <linux/config.h>11#include <linux/atmapi.h>12#include <linux/atm.h>13#include <linux/atmioc.h>···209210#ifdef __KERNEL__2110212#include <linux/wait.h> /* wait_queue_head_t */213#include <linux/time.h> /* struct timeval */214#include <linux/net.h>···274275276enum {277- ATM_DF_CLOSE, /* close device when last VCC is closed */278};279280···415 int number,unsigned long *flags); /* number == -1: pick first available */416struct atm_dev *atm_dev_lookup(int number);417void atm_dev_deregister(struct atm_dev *dev);418-void shutdown_atm_dev(struct atm_dev *dev);419void vcc_insert_socket(struct sock *sk);420421···456457static inline void atm_dev_put(struct atm_dev *dev)458{459- atomic_dec(&dev->refcnt);460-461- if ((atomic_read(&dev->refcnt) == 1) &&462- test_bit(ATM_DF_CLOSE,&dev->flags))463- shutdown_atm_dev(dev);0464}465466467int atm_charge(struct atm_vcc *vcc,int truesize);468struct sk_buff *atm_alloc_charge(struct atm_vcc *vcc,int pdu_size,469 gfp_t gfp_flags);470-int atm_pcr_goal(struct atm_trafprm *tp);471472void vcc_release_async(struct atm_vcc *vcc, int reply);473
···7#define LINUX_ATMDEV_H89010#include <linux/atmapi.h>11#include <linux/atm.h>12#include <linux/atmioc.h>···210211#ifdef __KERNEL__212213+#include <linux/config.h>214#include <linux/wait.h> /* wait_queue_head_t */215#include <linux/time.h> /* struct timeval */216#include <linux/net.h>···274275276enum {277+ ATM_DF_REMOVED, /* device was removed from atm_devs list */278};279280···415 int number,unsigned long *flags); /* number == -1: pick first available */416struct atm_dev *atm_dev_lookup(int number);417void atm_dev_deregister(struct atm_dev *dev);0418void vcc_insert_socket(struct sock *sk);419420···457458static inline void atm_dev_put(struct atm_dev *dev)459{460+ if (atomic_dec_and_test(&dev->refcnt)) {461+ BUG_ON(!test_bit(ATM_DF_REMOVED, &dev->flags));462+ if (dev->ops->dev_close)463+ dev->ops->dev_close(dev);464+ kfree(dev);465+ }466}467468469int atm_charge(struct atm_vcc *vcc,int truesize);470struct sk_buff *atm_alloc_charge(struct atm_vcc *vcc,int pdu_size,471 gfp_t gfp_flags);472+int atm_pcr_goal(const struct atm_trafprm *tp);473474void vcc_release_async(struct atm_vcc *vcc, int reply);475
+7-4
net/atm/atm_misc.c
···74 */757677-int atm_pcr_goal(struct atm_trafprm *tp)78{79- if (tp->pcr && tp->pcr != ATM_MAX_PCR) return -tp->pcr;80- if (tp->min_pcr && !tp->pcr) return tp->min_pcr;81- if (tp->max_pcr != ATM_MAX_PCR) return -tp->max_pcr;00082 return 0;83}84
···74 */757677+int atm_pcr_goal(const struct atm_trafprm *tp)78{79+ if (tp->pcr && tp->pcr != ATM_MAX_PCR)80+ return -tp->pcr;81+ if (tp->min_pcr && !tp->pcr)82+ return tp->min_pcr;83+ if (tp->max_pcr != ATM_MAX_PCR)84+ return -tp->max_pcr;85 return 0;86}87
+40-26
net/atm/common.c
···221EXPORT_SYMBOL(vcc_release_async);22222300000000000000000000000224static int adjust_tp(struct atm_trafprm *tp,unsigned char aal)225{226 int max_sdu;···355 return -EINVAL;356 if (vci > 0 && vci < ATM_NOT_RSV_VCI && !capable(CAP_NET_BIND_SERVICE))357 return -EPERM;358- error = 0;359 if (!try_module_get(dev->ops->owner))360- return -ENODEV;361 vcc->dev = dev;362 write_lock_irq(&vcc_sklist_lock);363- if ((error = find_ci(vcc, &vpi, &vci))) {0364 write_unlock_irq(&vcc_sklist_lock);365 goto fail_module_put;366 }···447 if (vcc->qos.txtp.traffic_class == ATM_ANYCLASS ||448 vcc->qos.rxtp.traffic_class == ATM_ANYCLASS)449 return -EINVAL;450- if (itf != ATM_ITF_ANY) {451- dev = atm_dev_lookup(itf);452- if (!dev)453- return -ENODEV;454- error = __vcc_connect(vcc, dev, vpi, vci);455- if (error) {456- atm_dev_put(dev);457- return error;458- }459 } else {460- struct list_head *p, *next;461-462 dev = NULL;463- spin_lock(&atm_dev_lock);464- list_for_each_safe(p, next, &atm_devs) {465- dev = list_entry(p, struct atm_dev, dev_list);466 atm_dev_hold(dev);467- spin_unlock(&atm_dev_lock);468- if (!__vcc_connect(vcc, dev, vpi, vci))469- break;470- atm_dev_put(dev);471- dev = NULL;472- spin_lock(&atm_dev_lock);473 }474- spin_unlock(&atm_dev_lock);475- if (!dev)476- return -ENODEV;00000477 }478 if (vpi == ATM_VPI_UNSPEC || vci == ATM_VCI_UNSPEC)479 set_bit(ATM_VF_PARTIAL,&vcc->flags);
···221EXPORT_SYMBOL(vcc_release_async);222223224+void atm_dev_release_vccs(struct atm_dev *dev)225+{226+ int i;227+228+ write_lock_irq(&vcc_sklist_lock);229+ for (i = 0; i < VCC_HTABLE_SIZE; i++) {230+ struct hlist_head *head = &vcc_hash[i];231+ struct hlist_node *node, *tmp;232+ struct sock *s;233+ struct atm_vcc *vcc;234+235+ sk_for_each_safe(s, node, tmp, head) {236+ vcc = atm_sk(s);237+ if (vcc->dev == dev) {238+ vcc_release_async(vcc, -EPIPE);239+ sk_del_node_init(s);240+ }241+ }242+ }243+ write_unlock_irq(&vcc_sklist_lock);244+}245+246+247static int adjust_tp(struct atm_trafprm *tp,unsigned char aal)248{249 int max_sdu;···332 return -EINVAL;333 if (vci > 0 && vci < ATM_NOT_RSV_VCI && !capable(CAP_NET_BIND_SERVICE))334 return -EPERM;335+ error = -ENODEV;336 if (!try_module_get(dev->ops->owner))337+ return error;338 vcc->dev = dev;339 write_lock_irq(&vcc_sklist_lock);340+ if (test_bit(ATM_DF_REMOVED, &dev->flags) || 341+ (error = find_ci(vcc, &vpi, &vci))) {342 write_unlock_irq(&vcc_sklist_lock);343 goto fail_module_put;344 }···423 if (vcc->qos.txtp.traffic_class == ATM_ANYCLASS ||424 vcc->qos.rxtp.traffic_class == ATM_ANYCLASS)425 return -EINVAL;426+ if (likely(itf != ATM_ITF_ANY)) {427+ dev = try_then_request_module(atm_dev_lookup(itf), "atm-device-%d", itf);0000000428 } else {00429 dev = NULL;430+ down(&atm_dev_mutex);431+ if (!list_empty(&atm_devs)) {432+ dev = list_entry(atm_devs.next, struct atm_dev, dev_list);433 atm_dev_hold(dev);000000434 }435+ up(&atm_dev_mutex);436+ }437+ if (!dev)438+ return -ENODEV;439+ error = __vcc_connect(vcc, dev, vpi, vci);440+ if (error) {441+ atm_dev_put(dev);442+ return error;443 }444 if (vpi == ATM_VPI_UNSPEC || vci == ATM_VCI_UNSPEC)445 set_bit(ATM_VF_PARTIAL,&vcc->flags);
···83#define endfor_nexthops(fi) }848586-static struct 87{88 int error;89 u8 scope;
···83#define endfor_nexthops(fi) }848586+static const struct 87{88 int error;89 u8 scope;
+2-2
net/ipv4/icmp.c
···220 short error; /* This ICMP is classed as an error message */221};222223-static struct icmp_control icmp_pointers[NR_ICMP_TYPES+1];224225/*226 * The ICMP socket(s). This is the most convenient way to flow control···994/*995 * This table is the definition of how we handle ICMP.996 */997-static struct icmp_control icmp_pointers[NR_ICMP_TYPES + 1] = {998 [ICMP_ECHOREPLY] = {999 .output_entry = ICMP_MIB_OUTECHOREPS,1000 .input_entry = ICMP_MIB_INECHOREPS,
···220 short error; /* This ICMP is classed as an error message */221};222223+static const struct icmp_control icmp_pointers[NR_ICMP_TYPES+1];224225/*226 * The ICMP socket(s). This is the most convenient way to flow control···994/*995 * This table is the definition of how we handle ICMP.996 */997+static const struct icmp_control icmp_pointers[NR_ICMP_TYPES + 1] = {998 [ICMP_ECHOREPLY] = {999 .output_entry = ICMP_MIB_OUTECHOREPS,1000 .input_entry = ICMP_MIB_INECHOREPS,
···690 return csum;691}692693-inline int ip_ufo_append_data(struct sock *sk,694 int getfrag(void *from, char *to, int offset, int len,695 int odd, struct sk_buff *skb),696 void *from, int length, int hh_len, int fragheaderlen,
···690 return csum;691}692693+static inline int ip_ufo_append_data(struct sock *sk,694 int getfrag(void *from, char *to, int offset, int len,695 int odd, struct sk_buff *skb),696 void *from, int length, int hh_len, int fragheaderlen,
+1-1
net/ipv4/ipvs/ip_vs_conn.c
···771 * The drop rate array needs tuning for real environments.772 * Called from timer bh only => no locking773 */774- static char todrop_rate[9] = {0, 1, 2, 3, 4, 5, 6, 7, 8};775 static char todrop_counter[9] = {0};776 int i;777
···771 * The drop rate array needs tuning for real environments.772 * Called from timer bh only => no locking773 */774+ static const char todrop_rate[9] = {0, 1, 2, 3, 4, 5, 6, 7, 8};775 static char todrop_counter[9] = {0};776 int i;777
···37module_param(master_timeout, int, 0600);38MODULE_PARM_DESC(master_timeout, "timeout for the master connection");3940-static char *conns[] = { "DATA ", "MESG ", "INDEX " };4142/* This is slow, but it's simple. --RR */43static char *amanda_buffer;
···37module_param(master_timeout, int, 0600);38MODULE_PARM_DESC(master_timeout, "timeout for the master connection");3940+static const char *conns[] = { "DATA ", "MESG ", "INDEX " };4142/* This is slow, but it's simple. --RR */43static char *amanda_buffer;
+2-2
net/ipv4/netfilter/ip_conntrack_core.c
···1354 get_order(sizeof(struct list_head) * size));1355}13561357-void ip_conntrack_flush()1358{1359 /* This makes sure all current packets have passed through1360 netfilter framework. Roll on, two-stage module···1408 return hash;1409}14101411-int set_hashsize(const char *val, struct kernel_param *kp)1412{1413 int i, bucket, hashsize, vmalloced;1414 int old_vmalloced, old_size;
···1354 get_order(sizeof(struct list_head) * size));1355}13561357+void ip_conntrack_flush(void)1358{1359 /* This makes sure all current packets have passed through1360 netfilter framework. Roll on, two-stage module···1408 return hash;1409}14101411+static int set_hashsize(const char *val, struct kernel_param *kp)1412{1413 int i, bucket, hashsize, vmalloced;1414 int old_vmalloced, old_size;
···99 to ~13-30min depending on RTO. */100unsigned long ip_ct_tcp_timeout_max_retrans = 5 MINS;101102-static unsigned long * tcp_timeouts[]103= { NULL, /* TCP_CONNTRACK_NONE */104 &ip_ct_tcp_timeout_syn_sent, /* TCP_CONNTRACK_SYN_SENT, */105 &ip_ct_tcp_timeout_syn_recv, /* TCP_CONNTRACK_SYN_RECV, */···170 * if they are invalid171 * or we do not support the request (simultaneous open)172 */173-static enum tcp_conntrack tcp_conntracks[2][6][TCP_CONNTRACK_MAX] = {174 {175/* ORIGINAL */176/* sNO, sSS, sSR, sES, sFW, sCW, sLA, sTW, sCL, sLI */···817#define TH_CWR 0x80818819/* table of valid flag combinations - ECE and CWR are always valid */820-static u8 tcp_valid_flags[(TH_FIN|TH_SYN|TH_RST|TH_PUSH|TH_ACK|TH_URG) + 1] =821{822 [TH_SYN] = 1,823 [TH_SYN|TH_ACK] = 1,
···99 to ~13-30min depending on RTO. */100unsigned long ip_ct_tcp_timeout_max_retrans = 5 MINS;101102+static const unsigned long * tcp_timeouts[]103= { NULL, /* TCP_CONNTRACK_NONE */104 &ip_ct_tcp_timeout_syn_sent, /* TCP_CONNTRACK_SYN_SENT, */105 &ip_ct_tcp_timeout_syn_recv, /* TCP_CONNTRACK_SYN_RECV, */···170 * if they are invalid171 * or we do not support the request (simultaneous open)172 */173+static const enum tcp_conntrack tcp_conntracks[2][6][TCP_CONNTRACK_MAX] = {174 {175/* ORIGINAL */176/* sNO, sSS, sSR, sES, sFW, sCW, sLA, sTW, sCL, sLI */···817#define TH_CWR 0x80818819/* table of valid flag combinations - ECE and CWR are always valid */820+static const u8 tcp_valid_flags[(TH_FIN|TH_SYN|TH_RST|TH_PUSH|TH_ACK|TH_URG) + 1] =821{822 [TH_SYN] = 1,823 [TH_SYN|TH_ACK] = 1,
···751 inet6_del_protocol(&icmpv6_protocol, IPPROTO_ICMPV6);752}753754-static struct icmp6_err {755 int err;756 int fatal;757} tab_unreach[] = {
···751 inet6_del_protocol(&icmpv6_protocol, IPPROTO_ICMPV6);752}753754+static const struct icmp6_err {755 int err;756 int fatal;757} tab_unreach[] = {
+2-1
net/ipv6/ip6_output.c
···774 *dst = NULL;775 return err;776}777-inline int ip6_ufo_append_data(struct sock *sk,0778 int getfrag(void *from, char *to, int offset, int len,779 int odd, struct sk_buff *skb),780 void *from, int length, int hh_len, int fragheaderlen,
···774 *dst = NULL;775 return err;776}777+778+static inline int ip6_ufo_append_data(struct sock *sk,779 int getfrag(void *from, char *to, int offset, int len,780 int odd, struct sk_buff *skb),781 void *from, int length, int hh_len, int fragheaderlen,
+2-2
net/ipv6/ipv6_sockglue.c
···628 return -EINVAL;629}630631-int ipv6_getsockopt_sticky(struct sock *sk, struct ipv6_opt_hdr *hdr,632- char __user *optval, int len)633{634 if (!hdr)635 return 0;
···628 return -EINVAL;629}630631+static int ipv6_getsockopt_sticky(struct sock *sk, struct ipv6_opt_hdr *hdr,632+ char __user *optval, int len)633{634 if (!hdr)635 return 0;