• Home
  • Raw
  • Download

Lines Matching refs:sk

96 int nl_connect(struct nl_sock *sk, int protocol)  in nl_connect()  argument
106 if (sk->s_fd != -1) in nl_connect()
109 sk->s_fd = socket(AF_NETLINK, SOCK_RAW | flags, protocol); in nl_connect()
110 if (sk->s_fd < 0) { in nl_connect()
112 NL_DBG(4, "nl_connect(%p): socket() failed with %d\n", sk, errsv); in nl_connect()
117 if (!(sk->s_flags & NL_SOCK_BUFSIZE_SET)) { in nl_connect()
118 err = nl_socket_set_buffer_size(sk, 0, 0); in nl_connect()
123 if (_nl_socket_is_local_port_unspecified (sk)) { in nl_connect()
128 port = _nl_socket_generate_local_port_no_release(sk); in nl_connect()
131 NL_DBG(4, "nl_connect(%p): no more unused local ports.\n", sk); in nl_connect()
136 err = bind(sk->s_fd, (struct sockaddr*) &sk->s_local, in nl_connect()
137 sizeof(sk->s_local)); in nl_connect()
143 NL_DBG(4, "nl_connect(%p): local port %u already in use. Retry.\n", sk, (unsigned) port); in nl_connect()
146 NL_DBG(4, "nl_connect(%p): bind() for port %u failed with %d\n", sk, (unsigned) port, errsv); in nl_connect()
154 err = bind(sk->s_fd, (struct sockaddr*) &sk->s_local, in nl_connect()
155 sizeof(sk->s_local)); in nl_connect()
158 NL_DBG(4, "nl_connect(%p): bind() failed with %d\n", sk, errsv); in nl_connect()
164 addrlen = sizeof(sk->s_local); in nl_connect()
165 err = getsockname(sk->s_fd, (struct sockaddr *) &sk->s_local, in nl_connect()
172 if (addrlen != sizeof(sk->s_local)) { in nl_connect()
177 if (sk->s_local.nl_family != AF_NETLINK) { in nl_connect()
182 sk->s_proto = protocol; in nl_connect()
186 if (sk->s_fd != -1) { in nl_connect()
187 close(sk->s_fd); in nl_connect()
188 sk->s_fd = -1; in nl_connect()
205 void nl_close(struct nl_sock *sk) in nl_close() argument
207 if (sk->s_fd >= 0) { in nl_close()
208 close(sk->s_fd); in nl_close()
209 sk->s_fd = -1; in nl_close()
212 sk->s_proto = 0; in nl_close()
245 int nl_sendto(struct nl_sock *sk, void *buf, size_t size) in nl_sendto() argument
252 if (sk->s_fd < 0) in nl_sendto()
255 ret = sendto(sk->s_fd, buf, size, 0, (struct sockaddr *) in nl_sendto()
256 &sk->s_peer, sizeof(sk->s_peer)); in nl_sendto()
299 int nl_sendmsg(struct nl_sock *sk, struct nl_msg *msg, struct msghdr *hdr) in nl_sendmsg() argument
304 if (sk->s_fd < 0) in nl_sendmsg()
307 nlmsg_set_src(msg, &sk->s_local); in nl_sendmsg()
309 cb = sk->s_cb; in nl_sendmsg()
314 ret = sendmsg(sk->s_fd, hdr, 0); in nl_sendmsg()
342 int nl_send_iovec(struct nl_sock *sk, struct nl_msg *msg, struct iovec *iov, unsigned iovlen) in nl_send_iovec() argument
347 .msg_name = (void *) &sk->s_peer, in nl_send_iovec()
376 return nl_sendmsg(sk, msg, &hdr); in nl_send_iovec()
416 int nl_send(struct nl_sock *sk, struct nl_msg *msg) in nl_send() argument
418 struct nl_cb *cb = sk->s_cb; in nl_send()
421 return cb->cb_send_ow(sk, msg); in nl_send()
428 return nl_send_iovec(sk, msg, &iov, 1); in nl_send()
450 void nl_complete_msg(struct nl_sock *sk, struct nl_msg *msg) in nl_complete_msg() argument
456 nlh->nlmsg_pid = nl_socket_get_local_port(sk); in nl_complete_msg()
459 nlh->nlmsg_seq = sk->s_seq_next++; in nl_complete_msg()
462 msg->nm_protocol = sk->s_proto; in nl_complete_msg()
466 if (!(sk->s_flags & NL_NO_AUTO_ACK)) in nl_complete_msg()
485 int nl_send_auto(struct nl_sock *sk, struct nl_msg *msg) in nl_send_auto() argument
487 nl_complete_msg(sk, msg); in nl_send_auto()
489 return nl_send(sk, msg); in nl_send_auto()
517 int nl_send_sync(struct nl_sock *sk, struct nl_msg *msg) in nl_send_sync() argument
521 err = nl_send_auto(sk, msg); in nl_send_sync()
526 return wait_for_ack(sk); in nl_send_sync()
549 int nl_send_simple(struct nl_sock *sk, int type, int flags, void *buf, in nl_send_simple() argument
565 err = nl_send_auto(sk, msg); in nl_send_simple()
625 int nl_recv(struct nl_sock *sk, struct sockaddr_nl *nla, in nl_recv() argument
644 if (sk->s_flags & NL_MSG_PEEK) in nl_recv()
650 iov.iov_len = sk->s_bufsize ? : page_size; in nl_recv()
658 if (creds && (sk->s_flags & NL_SOCK_PASSCRED)) { in nl_recv()
668 n = recvmsg(sk->s_fd, &msg, flags); in nl_recv()
721 if (creds && (sk->s_flags & NL_SOCK_PASSCRED)) { in nl_recv()
775 static int recvmsgs(struct nl_sock *sk, struct nl_cb *cb) in recvmsgs() argument
791 NL_DBG(3, "Attempting to read from %p\n", sk); in recvmsgs()
793 n = cb->cb_recv_ow(sk, &nla, &buf, &creds); in recvmsgs()
795 n = nl_recv(sk, &nla, &buf, &creds); in recvmsgs()
800 NL_DBG(3, "recvmsgs(%p): Read %d bytes\n", sk, n); in recvmsgs()
804 NL_DBG(3, "recvmsgs(%p): Processing valid message...\n", sk); in recvmsgs()
813 nlmsg_set_proto(msg, sk->s_proto); in recvmsgs()
832 } else if (!(sk->s_flags & NL_NO_AUTO_ACK)) { in recvmsgs()
833 if (hdr->nlmsg_seq != sk->s_seq_expect) { in recvmsgs()
849 sk->s_seq_expect++; in recvmsgs()
852 sk, sk->s_seq_expect); in recvmsgs()
998 int nl_recvmsgs_report(struct nl_sock *sk, struct nl_cb *cb) in nl_recvmsgs_report() argument
1001 return cb->cb_recvmsgs_ow(sk, cb); in nl_recvmsgs_report()
1003 return recvmsgs(sk, cb); in nl_recvmsgs_report()
1023 int nl_recvmsgs(struct nl_sock *sk, struct nl_cb *cb) in nl_recvmsgs() argument
1027 if ((err = nl_recvmsgs_report(sk, cb)) > 0) in nl_recvmsgs()
1039 int nl_recvmsgs_default(struct nl_sock *sk) in nl_recvmsgs_default() argument
1041 return nl_recvmsgs(sk, sk->s_cb); in nl_recvmsgs_default()
1058 int nl_wait_for_ack(struct nl_sock *sk) in nl_wait_for_ack() argument
1063 cb = nl_cb_clone(sk->s_cb); in nl_wait_for_ack()
1068 err = nl_recvmsgs(sk, cb); in nl_wait_for_ack()
1116 int nl_pickup(struct nl_sock *sk, in nl_pickup() argument
1127 cb = nl_cb_clone(sk->s_cb); in nl_pickup()
1133 err = nl_recvmsgs(sk, cb); in nl_pickup()
1154 void nl_auto_complete(struct nl_sock *sk, struct nl_msg *msg) in nl_auto_complete() argument
1156 nl_complete_msg(sk, msg); in nl_auto_complete()
1162 int nl_send_auto_complete(struct nl_sock *sk, struct nl_msg *msg) in nl_send_auto_complete() argument
1164 return nl_send_auto(sk, msg); in nl_send_auto_complete()