]> err.no Git - linux-2.6/blobdiff - net/sctp/protocol.c
the scheduled ieee80211 softmac removal
[linux-2.6] / net / sctp / protocol.c
index 22a16571499c3bc82902941d96f2bdbdfb00eca7..87512f14cf719ead1a20c97dfe32a4b4503043d9 100644 (file)
@@ -363,7 +363,7 @@ static int sctp_v4_addr_valid(union sctp_addr *addr,
                return 0;
 
        /* Is this a broadcast address? */
-       if (skb && ((struct rtable *)skb->dst)->rt_flags & RTCF_BROADCAST)
+       if (skb && skb->rtable->rt_flags & RTCF_BROADCAST)
                return 0;
 
        return 1;
@@ -451,7 +451,7 @@ static struct dst_entry *sctp_v4_get_dst(struct sctp_association *asoc,
                fl.fl4_src = saddr->v4.sin_addr.s_addr;
 
        SCTP_DEBUG_PRINTK("%s: DST:%u.%u.%u.%u, SRC:%u.%u.%u.%u - ",
-                         __FUNCTION__, NIPQUAD(fl.fl4_dst),
+                         __func__, NIPQUAD(fl.fl4_dst),
                          NIPQUAD(fl.fl4_src));
 
        if (!ip_route_output_key(&init_net, &rt, &fl)) {
@@ -539,7 +539,7 @@ static void sctp_v4_get_saddr(struct sctp_association *asoc,
 /* What interface did this skb arrive on? */
 static int sctp_v4_skb_iif(const struct sk_buff *skb)
 {
-       return ((struct rtable *)skb->dst)->rt_iif;
+       return skb->rtable->rt_iif;
 }
 
 /* Was this packet marked by Explicit Congestion Notification? */
@@ -629,6 +629,9 @@ static int sctp_inetaddr_event(struct notifier_block *this, unsigned long ev,
        struct sctp_sockaddr_entry *addr = NULL;
        struct sctp_sockaddr_entry *temp;
 
+       if (ifa->ifa_dev->dev->nd_net != &init_net)
+               return NOTIFY_DONE;
+
        switch (ev) {
        case NETDEV_UP:
                addr = kmalloc(sizeof(struct sctp_sockaddr_entry), GFP_ATOMIC);
@@ -824,15 +827,15 @@ static inline int sctp_v4_xmit(struct sk_buff *skb,
 {
        SCTP_DEBUG_PRINTK("%s: skb:%p, len:%d, "
                          "src:%u.%u.%u.%u, dst:%u.%u.%u.%u\n",
-                         __FUNCTION__, skb, skb->len,
-                         NIPQUAD(((struct rtable *)skb->dst)->rt_src),
-                         NIPQUAD(((struct rtable *)skb->dst)->rt_dst));
+                         __func__, skb, skb->len,
+                         NIPQUAD(skb->rtable->rt_src),
+                         NIPQUAD(skb->rtable->rt_dst));
 
        SCTP_INC_STATS(SCTP_MIB_OUTSCTPPACKS);
        return ip_queue_xmit(skb, ipfragok);
 }
 
-static struct sctp_af sctp_ipv4_specific;
+static struct sctp_af sctp_af_inet;
 
 static struct sctp_pf sctp_pf_inet = {
        .event_msgname = sctp_inet_event_msgname,
@@ -844,7 +847,7 @@ static struct sctp_pf sctp_pf_inet = {
        .supported_addrs = sctp_inet_supported_addrs,
        .create_accept_sk = sctp_v4_create_accept_sk,
        .addr_v4map     = sctp_v4_addr_v4map,
-       .af            = &sctp_ipv4_specific,
+       .af            = &sctp_af_inet
 };
 
 /* Notifier for inetaddr addition/deletion events.  */
@@ -906,7 +909,7 @@ static struct net_protocol sctp_protocol = {
 };
 
 /* IPv4 address related functions.  */
-static struct sctp_af sctp_ipv4_specific = {
+static struct sctp_af sctp_af_inet = {
        .sa_family         = AF_INET,
        .sctp_xmit         = sctp_v4_xmit,
        .setsockopt        = ip_setsockopt,
@@ -1192,7 +1195,7 @@ SCTP_STATIC __init int sctp_init(void)
        sctp_sysctl_register();
 
        INIT_LIST_HEAD(&sctp_address_families);
-       sctp_register_af(&sctp_ipv4_specific);
+       sctp_register_af(&sctp_af_inet);
 
        status = proto_register(&sctp_prot, 1);
        if (status)
@@ -1249,7 +1252,7 @@ err_v6_init:
        proto_unregister(&sctp_prot);
 err_proto_register:
        sctp_sysctl_unregister();
-       list_del(&sctp_ipv4_specific.list);
+       list_del(&sctp_af_inet.list);
        free_pages((unsigned long)sctp_port_hashtable,
                   get_order(sctp_port_hashsize *
                             sizeof(struct sctp_bind_hashbucket)));
@@ -1299,7 +1302,7 @@ SCTP_STATIC __exit void sctp_exit(void)
        inet_unregister_protosw(&sctp_seqpacket_protosw);
 
        sctp_sysctl_unregister();
-       list_del(&sctp_ipv4_specific.list);
+       list_del(&sctp_af_inet.list);
 
        free_pages((unsigned long)sctp_assoc_hashtable,
                   get_order(sctp_assoc_hashsize *