Lines Matching refs:addr
83 static inline u8 llc_ui_addr_null(struct sockaddr_llc *addr) in llc_ui_addr_null() argument
85 return !memcmp(addr, &llc_ui_addrnull, sizeof(*addr)); in llc_ui_addr_null()
97 static inline u8 llc_ui_header_len(struct sock *sk, struct sockaddr_llc *addr) in llc_ui_header_len() argument
101 if (addr->sllc_test) in llc_ui_header_len()
103 else if (addr->sllc_xid) in llc_ui_header_len()
276 static int llc_ui_autobind(struct socket *sock, struct sockaddr_llc *addr) in llc_ui_autobind() argument
286 if (!addr->sllc_arphrd) in llc_ui_autobind()
287 addr->sllc_arphrd = ARPHRD_ETHER; in llc_ui_autobind()
288 if (addr->sllc_arphrd != ARPHRD_ETHER) in llc_ui_autobind()
293 if (dev && addr->sllc_arphrd != dev->type) { in llc_ui_autobind()
298 dev = dev_getfirstbyhwtype(&init_net, addr->sllc_arphrd); in llc_ui_autobind()
316 memcpy(&llc->addr, addr, sizeof(llc->addr)); in llc_ui_autobind()
342 struct sockaddr_llc *addr = (struct sockaddr_llc *)uaddr; in llc_ui_bind() local
350 if (unlikely(!sock_flag(sk, SOCK_ZAPPED) || addrlen != sizeof(*addr))) in llc_ui_bind()
353 if (!addr->sllc_arphrd) in llc_ui_bind()
354 addr->sllc_arphrd = ARPHRD_ETHER; in llc_ui_bind()
355 if (unlikely(addr->sllc_family != AF_LLC || addr->sllc_arphrd != ARPHRD_ETHER)) in llc_ui_bind()
357 dprintk("%s: binding %02X\n", __func__, addr->sllc_sap); in llc_ui_bind()
363 if (is_zero_ether_addr(addr->sllc_mac)) in llc_ui_bind()
364 memcpy(addr->sllc_mac, dev->dev_addr, in llc_ui_bind()
366 if (addr->sllc_arphrd != dev->type || in llc_ui_bind()
367 !ether_addr_equal(addr->sllc_mac, in llc_ui_bind()
374 dev = dev_getbyhwaddr_rcu(&init_net, addr->sllc_arphrd, in llc_ui_bind()
375 addr->sllc_mac); in llc_ui_bind()
382 if (!addr->sllc_sap) { in llc_ui_bind()
384 addr->sllc_sap = llc_ui_autoport(); in llc_ui_bind()
385 if (!addr->sllc_sap) in llc_ui_bind()
388 sap = llc_sap_find(addr->sllc_sap); in llc_ui_bind()
390 sap = llc_sap_open(addr->sllc_sap, NULL); in llc_ui_bind()
404 memcpy(laddr.mac, addr->sllc_mac, IFHWADDRLEN); in llc_ui_bind()
405 laddr.lsap = addr->sllc_sap; in llc_ui_bind()
419 llc->laddr.lsap = addr->sllc_sap; in llc_ui_bind()
420 memcpy(llc->laddr.mac, addr->sllc_mac, IFHWADDRLEN); in llc_ui_bind()
421 memcpy(&llc->addr, addr, sizeof(llc->addr)); in llc_ui_bind()
485 struct sockaddr_llc *addr = (struct sockaddr_llc *)uaddr; in llc_ui_connect() local
489 if (unlikely(addrlen != sizeof(*addr))) in llc_ui_connect()
492 if (unlikely(addr->sllc_family != AF_LLC)) in llc_ui_connect()
502 rc = llc_ui_autobind(sock, addr); in llc_ui_connect()
506 llc->daddr.lsap = addr->sllc_sap; in llc_ui_connect()
507 memcpy(llc->daddr.mac, addr->sllc_mac, IFHWADDRLEN); in llc_ui_connect()
512 addr->sllc_mac, addr->sllc_sap); in llc_ui_connect()
734 memcpy(&newllc->addr, &llc->addr, sizeof(newllc->addr)); in llc_ui_accept()
741 llc_sk(sk)->addr.sllc_sap, newllc->daddr.lsap); in llc_ui_accept()
932 DECLARE_SOCKADDR(struct sockaddr_llc *, addr, msg->msg_name); in llc_ui_sendmsg()
945 if (addr) { in llc_ui_sendmsg()
946 if (msg->msg_namelen < sizeof(*addr)) in llc_ui_sendmsg()
949 if (llc_ui_addr_null(&llc->addr)) in llc_ui_sendmsg()
951 addr = &llc->addr; in llc_ui_sendmsg()
956 rc = llc_ui_autobind(sock, addr); in llc_ui_sendmsg()
962 hdrlen = llc_ui_header_len(sk, addr); in llc_ui_sendmsg()
976 hdrlen != llc_ui_header_len(sk, addr) || in llc_ui_sendmsg()
981 skb->protocol = llc_proto_type(addr->sllc_arphrd); in llc_ui_sendmsg()
986 if (sk->sk_type == SOCK_DGRAM || addr->sllc_ua) { in llc_ui_sendmsg()
987 llc_build_and_send_ui_pkt(llc->sap, skb, addr->sllc_mac, in llc_ui_sendmsg()
988 addr->sllc_sap); in llc_ui_sendmsg()
992 if (addr->sllc_test) { in llc_ui_sendmsg()
993 llc_build_and_send_test_pkt(llc->sap, skb, addr->sllc_mac, in llc_ui_sendmsg()
994 addr->sllc_sap); in llc_ui_sendmsg()
998 if (addr->sllc_xid) { in llc_ui_sendmsg()
999 llc_build_and_send_xid_pkt(llc->sap, skb, addr->sllc_mac, in llc_ui_sendmsg()
1000 addr->sllc_sap); in llc_ui_sendmsg()
1005 if (!(sk->sk_type == SOCK_STREAM && !addr->sllc_ua)) in llc_ui_sendmsg()