• Home
  • Raw
  • Download

Lines Matching refs:addr

78 static void sctp_v6_to_addr(union sctp_addr *addr, struct in6_addr *saddr,
93 struct sctp_sockaddr_entry *addr = NULL; in sctp_inet6addr_event() local
100 addr = kmalloc(sizeof(struct sctp_sockaddr_entry), GFP_ATOMIC); in sctp_inet6addr_event()
101 if (addr) { in sctp_inet6addr_event()
102 addr->a.v6.sin6_family = AF_INET6; in sctp_inet6addr_event()
103 addr->a.v6.sin6_port = 0; in sctp_inet6addr_event()
104 addr->a.v6.sin6_addr = ifa->addr; in sctp_inet6addr_event()
105 addr->a.v6.sin6_scope_id = ifa->idev->dev->ifindex; in sctp_inet6addr_event()
106 addr->valid = 1; in sctp_inet6addr_event()
108 list_add_tail_rcu(&addr->list, &net->sctp.local_addr_list); in sctp_inet6addr_event()
109 sctp_addr_wq_mgmt(net, addr, SCTP_ADDR_NEW); in sctp_inet6addr_event()
115 list_for_each_entry_safe(addr, temp, in sctp_inet6addr_event()
117 if (addr->a.sa.sa_family == AF_INET6 && in sctp_inet6addr_event()
118 ipv6_addr_equal(&addr->a.v6.sin6_addr, in sctp_inet6addr_event()
119 &ifa->addr)) { in sctp_inet6addr_event()
120 sctp_addr_wq_mgmt(net, addr, SCTP_ADDR_DEL); in sctp_inet6addr_event()
122 addr->valid = 0; in sctp_inet6addr_event()
123 list_del_rcu(&addr->list); in sctp_inet6addr_event()
129 kfree_rcu(addr, rcu); in sctp_inet6addr_event()
359 &rt->rt6i_dst.addr, rt->rt6i_dst.plen, in sctp_v6_get_dst()
401 struct sctp_sockaddr_entry *addr; in sctp_v6_copy_addrlist() local
412 addr = kzalloc(sizeof(*addr), GFP_ATOMIC); in sctp_v6_copy_addrlist()
413 if (addr) { in sctp_v6_copy_addrlist()
414 addr->a.v6.sin6_family = AF_INET6; in sctp_v6_copy_addrlist()
415 addr->a.v6.sin6_port = 0; in sctp_v6_copy_addrlist()
416 addr->a.v6.sin6_addr = ifp->addr; in sctp_v6_copy_addrlist()
417 addr->a.v6.sin6_scope_id = dev->ifindex; in sctp_v6_copy_addrlist()
418 addr->valid = 1; in sctp_v6_copy_addrlist()
419 INIT_LIST_HEAD(&addr->list); in sctp_v6_copy_addrlist()
420 list_add_tail(&addr->list, addrlist); in sctp_v6_copy_addrlist()
429 static void sctp_v6_from_skb(union sctp_addr *addr, struct sk_buff *skb, in sctp_v6_from_skb() argument
435 port = &addr->v6.sin6_port; in sctp_v6_from_skb()
436 addr->v6.sin6_family = AF_INET6; in sctp_v6_from_skb()
437 addr->v6.sin6_flowinfo = 0; /* FIXME */ in sctp_v6_from_skb()
438 addr->v6.sin6_scope_id = ((struct inet6_skb_parm *)skb->cb)->iif; in sctp_v6_from_skb()
444 addr->v6.sin6_addr = ipv6_hdr(skb)->saddr; in sctp_v6_from_skb()
447 addr->v6.sin6_addr = ipv6_hdr(skb)->daddr; in sctp_v6_from_skb()
452 static void sctp_v6_from_sk(union sctp_addr *addr, struct sock *sk) in sctp_v6_from_sk() argument
454 addr->v6.sin6_family = AF_INET6; in sctp_v6_from_sk()
455 addr->v6.sin6_port = 0; in sctp_v6_from_sk()
456 addr->v6.sin6_addr = sk->sk_v6_rcv_saddr; in sctp_v6_from_sk()
460 static void sctp_v6_to_sk_saddr(union sctp_addr *addr, struct sock *sk) in sctp_v6_to_sk_saddr() argument
462 if (addr->sa.sa_family == AF_INET) { in sctp_v6_to_sk_saddr()
467 addr->v4.sin_addr.s_addr; in sctp_v6_to_sk_saddr()
469 sk->sk_v6_rcv_saddr = addr->v6.sin6_addr; in sctp_v6_to_sk_saddr()
474 static void sctp_v6_to_sk_daddr(union sctp_addr *addr, struct sock *sk) in sctp_v6_to_sk_daddr() argument
476 if (addr->sa.sa_family == AF_INET) { in sctp_v6_to_sk_daddr()
480 sk->sk_v6_daddr.s6_addr32[3] = addr->v4.sin_addr.s_addr; in sctp_v6_to_sk_daddr()
482 sk->sk_v6_daddr = addr->v6.sin6_addr; in sctp_v6_to_sk_daddr()
487 static void sctp_v6_from_addr_param(union sctp_addr *addr, in sctp_v6_from_addr_param() argument
491 addr->v6.sin6_family = AF_INET6; in sctp_v6_from_addr_param()
492 addr->v6.sin6_port = port; in sctp_v6_from_addr_param()
493 addr->v6.sin6_flowinfo = 0; /* BUG */ in sctp_v6_from_addr_param()
494 addr->v6.sin6_addr = param->v6.addr; in sctp_v6_from_addr_param()
495 addr->v6.sin6_scope_id = iif; in sctp_v6_from_addr_param()
501 static int sctp_v6_to_addr_param(const union sctp_addr *addr, in sctp_v6_to_addr_param() argument
508 param->v6.addr = addr->v6.sin6_addr; in sctp_v6_to_addr_param()
514 static void sctp_v6_to_addr(union sctp_addr *addr, struct in6_addr *saddr, in sctp_v6_to_addr() argument
517 addr->sa.sa_family = AF_INET6; in sctp_v6_to_addr()
518 addr->v6.sin6_port = port; in sctp_v6_to_addr()
519 addr->v6.sin6_flowinfo = 0; in sctp_v6_to_addr()
520 addr->v6.sin6_addr = *saddr; in sctp_v6_to_addr()
521 addr->v6.sin6_scope_id = 0; in sctp_v6_to_addr()
568 static void sctp_v6_inaddr_any(union sctp_addr *addr, __be16 port) in sctp_v6_inaddr_any() argument
570 memset(addr, 0x00, sizeof(union sctp_addr)); in sctp_v6_inaddr_any()
571 addr->v6.sin6_family = AF_INET6; in sctp_v6_inaddr_any()
572 addr->v6.sin6_port = port; in sctp_v6_inaddr_any()
576 static int sctp_v6_is_any(const union sctp_addr *addr) in sctp_v6_is_any() argument
578 return ipv6_addr_any(&addr->v6.sin6_addr); in sctp_v6_is_any()
582 static int sctp_v6_available(union sctp_addr *addr, struct sctp_sock *sp) in sctp_v6_available() argument
586 const struct in6_addr *in6 = (const struct in6_addr *)&addr->v6.sin6_addr; in sctp_v6_available()
594 sctp_v6_map_v4(addr); in sctp_v6_available()
595 return sctp_get_af_specific(AF_INET)->available(addr, sp); in sctp_v6_available()
611 static int sctp_v6_addr_valid(union sctp_addr *addr, in sctp_v6_addr_valid() argument
615 int ret = ipv6_addr_type(&addr->v6.sin6_addr); in sctp_v6_addr_valid()
624 sctp_v6_map_v4(addr); in sctp_v6_addr_valid()
625 return sctp_get_af_specific(AF_INET)->addr_valid(addr, sp, skb); in sctp_v6_addr_valid()
636 static sctp_scope_t sctp_v6_scope(union sctp_addr *addr) in sctp_v6_scope() argument
645 v6scope = ipv6_addr_scope(&addr->v6.sin6_addr); in sctp_v6_scope()
722 static int sctp_v6_addr_to_user(struct sctp_sock *sp, union sctp_addr *addr) in sctp_v6_addr_to_user() argument
725 if (addr->sa.sa_family == AF_INET) in sctp_v6_addr_to_user()
726 sctp_v4_map_v6(addr); in sctp_v6_addr_to_user()
728 if (addr->sa.sa_family == AF_INET6 && in sctp_v6_addr_to_user()
729 ipv6_addr_v4mapped(&addr->v6.sin6_addr)) in sctp_v6_addr_to_user()
730 sctp_v6_map_v4(addr); in sctp_v6_addr_to_user()
733 if (addr->sa.sa_family == AF_INET) { in sctp_v6_addr_to_user()
734 memset(addr->v4.sin_zero, 0, sizeof(addr->v4.sin_zero)); in sctp_v6_addr_to_user()
753 static void sctp_v6_seq_dump_addr(struct seq_file *seq, union sctp_addr *addr) in sctp_v6_seq_dump_addr() argument
755 seq_printf(seq, "%pI6 ", &addr->v6.sin6_addr); in sctp_v6_seq_dump_addr()
767 union sctp_addr *addr; in sctp_inet6_event_msgname() local
774 addr = (union sctp_addr *)msgname; in sctp_inet6_event_msgname()
779 addr->v4.sin_family = AF_INET; in sctp_inet6_event_msgname()
780 addr->v4.sin_port = htons(asoc->peer.port); in sctp_inet6_event_msgname()
781 addr->v4.sin_addr = paddr->v4.sin_addr; in sctp_inet6_event_msgname()
783 addr->v6.sin6_family = AF_INET6; in sctp_inet6_event_msgname()
784 addr->v6.sin6_flowinfo = 0; in sctp_inet6_event_msgname()
786 addr->v6.sin6_scope_id = paddr->v6.sin6_scope_id; in sctp_inet6_event_msgname()
788 addr->v6.sin6_scope_id = 0; in sctp_inet6_event_msgname()
789 addr->v6.sin6_port = htons(asoc->peer.port); in sctp_inet6_event_msgname()
790 addr->v6.sin6_addr = paddr->v6.sin6_addr; in sctp_inet6_event_msgname()
793 *addrlen = sctp_v6_addr_to_user(sctp_sk(asoc->base.sk), addr); in sctp_inet6_event_msgname()
800 union sctp_addr *addr; in sctp_inet6_skb_msgname() local
806 addr = (union sctp_addr *)msgname; in sctp_inet6_skb_msgname()
810 addr->v4.sin_family = AF_INET; in sctp_inet6_skb_msgname()
811 addr->v4.sin_port = sh->source; in sctp_inet6_skb_msgname()
812 addr->v4.sin_addr.s_addr = ip_hdr(skb)->saddr; in sctp_inet6_skb_msgname()
814 addr->v6.sin6_family = AF_INET6; in sctp_inet6_skb_msgname()
815 addr->v6.sin6_flowinfo = 0; in sctp_inet6_skb_msgname()
816 addr->v6.sin6_port = sh->source; in sctp_inet6_skb_msgname()
817 addr->v6.sin6_addr = ipv6_hdr(skb)->saddr; in sctp_inet6_skb_msgname()
818 if (ipv6_addr_type(&addr->v6.sin6_addr) & IPV6_ADDR_LINKLOCAL) in sctp_inet6_skb_msgname()
819 addr->v6.sin6_scope_id = sctp_v6_skb_iif(skb); in sctp_inet6_skb_msgname()
821 addr->v6.sin6_scope_id = 0; in sctp_inet6_skb_msgname()
824 *addr_len = sctp_v6_addr_to_user(sctp_sk(skb->sk), addr); in sctp_inet6_skb_msgname()
873 static int sctp_inet6_bind_verify(struct sctp_sock *opt, union sctp_addr *addr) in sctp_inet6_bind_verify() argument
878 if (addr->sa.sa_family != AF_INET6) in sctp_inet6_bind_verify()
879 af = sctp_get_af_specific(addr->sa.sa_family); in sctp_inet6_bind_verify()
881 int type = ipv6_addr_type(&addr->v6.sin6_addr); in sctp_inet6_bind_verify()
886 if (!addr->v6.sin6_scope_id) in sctp_inet6_bind_verify()
890 dev = dev_get_by_index_rcu(net, addr->v6.sin6_scope_id); in sctp_inet6_bind_verify()
893 ipv6_chk_addr(net, &addr->v6.sin6_addr, in sctp_inet6_bind_verify()
903 return af->available(addr, opt); in sctp_inet6_bind_verify()
909 static int sctp_inet6_send_verify(struct sctp_sock *opt, union sctp_addr *addr) in sctp_inet6_send_verify() argument
914 if (addr->sa.sa_family != AF_INET6) in sctp_inet6_send_verify()
915 af = sctp_get_af_specific(addr->sa.sa_family); in sctp_inet6_send_verify()
917 int type = ipv6_addr_type(&addr->v6.sin6_addr); in sctp_inet6_send_verify()
921 if (!addr->v6.sin6_scope_id) in sctp_inet6_send_verify()
925 addr->v6.sin6_scope_id); in sctp_inet6_send_verify()