linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / net / sctp / protocol.c
index 1ab03a2..1ebc274 100644 (file)
@@ -240,7 +240,7 @@ int sctp_copy_local_addr_list(struct sctp_bind_addr *bp, sctp_scope_t scope,
                            (((AF_INET6 == addr->a.sa.sa_family) &&
                              (copy_flags & SCTP_ADDR6_ALLOWED) &&
                              (copy_flags & SCTP_ADDR6_PEERSUPP)))) {
-                               error = sctp_add_bind_addr(bp, &addr->a, 1,
+                               error = sctp_add_bind_addr(bp, &addr->a, 
                                                           GFP_ATOMIC);
                                if (error)
                                        goto end_copy;
@@ -486,8 +486,6 @@ static struct dst_entry *sctp_v4_get_dst(struct sctp_association *asoc,
                list_for_each(pos, &bp->address_list) {
                        laddr = list_entry(pos, struct sctp_sockaddr_entry,
                                           list);
-                       if (!laddr->use_as_src)
-                               continue;
                        sctp_v4_dst_saddr(&dst_saddr, dst, bp->port);
                        if (sctp_v4_cmp_addr(&dst_saddr, &laddr->a))
                                goto out_unlock;
@@ -508,8 +506,7 @@ static struct dst_entry *sctp_v4_get_dst(struct sctp_association *asoc,
        list_for_each(pos, &bp->address_list) {
                laddr = list_entry(pos, struct sctp_sockaddr_entry, list);
 
-               if ((laddr->use_as_src) &&
-                   (AF_INET == laddr->a.sa.sa_family)) {
+               if (AF_INET == laddr->a.sa.sa_family) {
                        fl.fl4_src = laddr->a.v4.sin_addr.s_addr;
                        if (!ip_route_output_key(&rt, &fl)) {
                                dst = &rt->u.dst;
@@ -840,28 +837,24 @@ static struct notifier_block sctp_inetaddr_notifier = {
 
 /* Socket operations.  */
 static const struct proto_ops inet_seqpacket_ops = {
-       .family            = PF_INET,
-       .owner             = THIS_MODULE,
-       .release           = inet_release,      /* Needs to be wrapped... */
-       .bind              = inet_bind,
-       .connect           = inet_dgram_connect,
-       .socketpair        = sock_no_socketpair,
-       .accept            = inet_accept,
-       .getname           = inet_getname,      /* Semantics are different.  */
-       .poll              = sctp_poll,
-       .ioctl             = inet_ioctl,
-       .listen            = sctp_inet_listen,
-       .shutdown          = inet_shutdown,     /* Looks harmless.  */
-       .setsockopt        = sock_common_setsockopt, /* IP_SOL IP_OPTION is a problem */
-       .getsockopt        = sock_common_getsockopt,
-       .sendmsg           = inet_sendmsg,
-       .recvmsg           = sock_common_recvmsg,
-       .mmap              = sock_no_mmap,
-       .sendpage          = sock_no_sendpage,
-#ifdef CONFIG_COMPAT
-       .compat_setsockopt = compat_sock_common_setsockopt,
-       .compat_getsockopt = compat_sock_common_getsockopt,
-#endif
+       .family      = PF_INET,
+       .owner       = THIS_MODULE,
+       .release     = inet_release,       /* Needs to be wrapped... */
+       .bind        = inet_bind,
+       .connect     = inet_dgram_connect,
+       .socketpair  = sock_no_socketpair,
+       .accept      = inet_accept,
+       .getname     = inet_getname,      /* Semantics are different.  */
+       .poll        = sctp_poll,
+       .ioctl       = inet_ioctl,
+       .listen      = sctp_inet_listen,
+       .shutdown    = inet_shutdown,     /* Looks harmless.  */
+       .setsockopt  = sock_common_setsockopt,   /* IP_SOL IP_OPTION is a problem. */
+       .getsockopt  = sock_common_getsockopt,
+       .sendmsg     = inet_sendmsg,
+       .recvmsg     = sock_common_recvmsg,
+       .mmap        = sock_no_mmap,
+       .sendpage    = sock_no_sendpage,
 };
 
 /* Registration with AF_INET family.  */
@@ -893,35 +886,31 @@ static struct net_protocol sctp_protocol = {
 
 /* IPv4 address related functions.  */
 static struct sctp_af sctp_ipv4_specific = {
-       .sa_family         = AF_INET,
-       .sctp_xmit         = sctp_v4_xmit,
-       .setsockopt        = ip_setsockopt,
-       .getsockopt        = ip_getsockopt,
-       .get_dst           = sctp_v4_get_dst,
-       .get_saddr         = sctp_v4_get_saddr,
-       .copy_addrlist     = sctp_v4_copy_addrlist,
-       .from_skb          = sctp_v4_from_skb,
-       .from_sk           = sctp_v4_from_sk,
-       .to_sk_saddr       = sctp_v4_to_sk_saddr,
-       .to_sk_daddr       = sctp_v4_to_sk_daddr,
-       .from_addr_param   = sctp_v4_from_addr_param,
-       .to_addr_param     = sctp_v4_to_addr_param,
-       .dst_saddr         = sctp_v4_dst_saddr,
-       .cmp_addr          = sctp_v4_cmp_addr,
-       .addr_valid        = sctp_v4_addr_valid,
-       .inaddr_any        = sctp_v4_inaddr_any,
-       .is_any            = sctp_v4_is_any,
-       .available         = sctp_v4_available,
-       .scope             = sctp_v4_scope,
-       .skb_iif           = sctp_v4_skb_iif,
-       .is_ce             = sctp_v4_is_ce,
-       .seq_dump_addr     = sctp_v4_seq_dump_addr,
-       .net_header_len    = sizeof(struct iphdr),
-       .sockaddr_len      = sizeof(struct sockaddr_in),
-#ifdef CONFIG_COMPAT
-       .compat_setsockopt = compat_ip_setsockopt,
-       .compat_getsockopt = compat_ip_getsockopt,
-#endif
+       .sctp_xmit      = sctp_v4_xmit,
+       .setsockopt     = ip_setsockopt,
+       .getsockopt     = ip_getsockopt,
+       .get_dst        = sctp_v4_get_dst,
+       .get_saddr      = sctp_v4_get_saddr,
+       .copy_addrlist  = sctp_v4_copy_addrlist,
+       .from_skb       = sctp_v4_from_skb,
+       .from_sk        = sctp_v4_from_sk,
+       .to_sk_saddr    = sctp_v4_to_sk_saddr,
+       .to_sk_daddr    = sctp_v4_to_sk_daddr,
+       .from_addr_param= sctp_v4_from_addr_param,
+       .to_addr_param  = sctp_v4_to_addr_param,        
+       .dst_saddr      = sctp_v4_dst_saddr,
+       .cmp_addr       = sctp_v4_cmp_addr,
+       .addr_valid     = sctp_v4_addr_valid,
+       .inaddr_any     = sctp_v4_inaddr_any,
+       .is_any         = sctp_v4_is_any,
+       .available      = sctp_v4_available,
+       .scope          = sctp_v4_scope,
+       .skb_iif        = sctp_v4_skb_iif,
+       .is_ce          = sctp_v4_is_ce,
+       .seq_dump_addr  = sctp_v4_seq_dump_addr,
+       .net_header_len = sizeof(struct iphdr),
+       .sockaddr_len   = sizeof(struct sockaddr_in),
+       .sa_family      = AF_INET,
 };
 
 struct sctp_pf *sctp_get_pf_specific(sa_family_t family) {