Lines Matching refs:addr
81 static inline u8 llc_ui_addr_null(struct sockaddr_llc *addr) in llc_ui_addr_null() argument
83 return !memcmp(addr, &llc_ui_addrnull, sizeof(*addr)); in llc_ui_addr_null()
95 static inline u8 llc_ui_header_len(struct sock *sk, struct sockaddr_llc *addr) in llc_ui_header_len() argument
99 if (addr->sllc_test || addr->sllc_xid) in llc_ui_header_len()
251 static int llc_ui_autobind(struct socket *sock, struct sockaddr_llc *addr) in llc_ui_autobind() argument
263 if (llc->dev && addr->sllc_arphrd != llc->dev->type) { in llc_ui_autobind()
268 llc->dev = dev_getfirstbyhwtype(&init_net, addr->sllc_arphrd); in llc_ui_autobind()
280 memcpy(&llc->addr, addr, sizeof(llc->addr)); in llc_ui_autobind()
305 struct sockaddr_llc *addr = (struct sockaddr_llc *)uaddr; in llc_ui_bind() local
311 dprintk("%s: binding %02X\n", __func__, addr->sllc_sap); in llc_ui_bind()
312 if (unlikely(!sock_flag(sk, SOCK_ZAPPED) || addrlen != sizeof(*addr))) in llc_ui_bind()
315 if (unlikely(addr->sllc_family != AF_LLC)) in llc_ui_bind()
322 if (!addr->sllc_arphrd) in llc_ui_bind()
323 addr->sllc_arphrd = llc->dev->type; in llc_ui_bind()
324 if (is_zero_ether_addr(addr->sllc_mac)) in llc_ui_bind()
325 memcpy(addr->sllc_mac, llc->dev->dev_addr, in llc_ui_bind()
327 if (addr->sllc_arphrd != llc->dev->type || in llc_ui_bind()
328 !ether_addr_equal(addr->sllc_mac, in llc_ui_bind()
335 llc->dev = dev_getbyhwaddr_rcu(&init_net, addr->sllc_arphrd, in llc_ui_bind()
336 addr->sllc_mac); in llc_ui_bind()
342 if (!addr->sllc_sap) { in llc_ui_bind()
344 addr->sllc_sap = llc_ui_autoport(); in llc_ui_bind()
345 if (!addr->sllc_sap) in llc_ui_bind()
348 sap = llc_sap_find(addr->sllc_sap); in llc_ui_bind()
350 sap = llc_sap_open(addr->sllc_sap, NULL); in llc_ui_bind()
364 memcpy(laddr.mac, addr->sllc_mac, IFHWADDRLEN); in llc_ui_bind()
365 laddr.lsap = addr->sllc_sap; in llc_ui_bind()
373 llc->laddr.lsap = addr->sllc_sap; in llc_ui_bind()
374 memcpy(llc->laddr.mac, addr->sllc_mac, IFHWADDRLEN); in llc_ui_bind()
375 memcpy(&llc->addr, addr, sizeof(llc->addr)); in llc_ui_bind()
437 struct sockaddr_llc *addr = (struct sockaddr_llc *)uaddr; in llc_ui_connect() local
441 if (unlikely(addrlen != sizeof(*addr))) in llc_ui_connect()
444 if (unlikely(addr->sllc_family != AF_LLC)) in llc_ui_connect()
454 rc = llc_ui_autobind(sock, addr); in llc_ui_connect()
458 llc->daddr.lsap = addr->sllc_sap; in llc_ui_connect()
459 memcpy(llc->daddr.mac, addr->sllc_mac, IFHWADDRLEN); in llc_ui_connect()
464 addr->sllc_mac, addr->sllc_sap); in llc_ui_connect()
683 memcpy(&newllc->addr, &llc->addr, sizeof(newllc->addr)); in llc_ui_accept()
690 llc_sk(sk)->addr.sllc_sap, newllc->daddr.lsap); in llc_ui_accept()
888 DECLARE_SOCKADDR(struct sockaddr_llc *, addr, msg->msg_name); in llc_ui_sendmsg()
898 if (addr) { in llc_ui_sendmsg()
899 if (msg->msg_namelen < sizeof(*addr)) in llc_ui_sendmsg()
902 if (llc_ui_addr_null(&llc->addr)) in llc_ui_sendmsg()
904 addr = &llc->addr; in llc_ui_sendmsg()
909 rc = llc_ui_autobind(sock, addr); in llc_ui_sendmsg()
913 hdrlen = llc->dev->hard_header_len + llc_ui_header_len(sk, addr); in llc_ui_sendmsg()
924 skb->protocol = llc_proto_type(addr->sllc_arphrd); in llc_ui_sendmsg()
929 if (sk->sk_type == SOCK_DGRAM || addr->sllc_ua) { in llc_ui_sendmsg()
930 llc_build_and_send_ui_pkt(llc->sap, skb, addr->sllc_mac, in llc_ui_sendmsg()
931 addr->sllc_sap); in llc_ui_sendmsg()
934 if (addr->sllc_test) { in llc_ui_sendmsg()
935 llc_build_and_send_test_pkt(llc->sap, skb, addr->sllc_mac, in llc_ui_sendmsg()
936 addr->sllc_sap); in llc_ui_sendmsg()
939 if (addr->sllc_xid) { in llc_ui_sendmsg()
940 llc_build_and_send_xid_pkt(llc->sap, skb, addr->sllc_mac, in llc_ui_sendmsg()
941 addr->sllc_sap); in llc_ui_sendmsg()
945 if (!(sk->sk_type == SOCK_STREAM && !addr->sllc_ua)) in llc_ui_sendmsg()