Lines Matching refs:rx
76 static int rxrpc_validate_address(struct rxrpc_sock *rx,
96 if (srx->transport.family != rx->family &&
97 srx->transport.family == AF_INET && rx->family != AF_INET6)
133 struct rxrpc_sock *rx = rxrpc_sk(sock->sk);
137 _enter("%p,%p,%d", rx, saddr, len);
139 ret = rxrpc_validate_address(rx, srx, len);
144 lock_sock(&rx->sk);
146 switch (rx->sk.sk_state) {
148 rx->srx = *srx;
149 local = rxrpc_lookup_local(sock_net(&rx->sk), &rx->srx);
159 rx->local = local;
160 rcu_assign_pointer(local->service, rx);
163 rx->sk.sk_state = RXRPC_SERVER_BOUND;
165 rx->local = local;
166 rx->sk.sk_state = RXRPC_CLIENT_BOUND;
175 if (service_id == rx->srx.srx_service)
178 srx->srx_service = rx->srx.srx_service;
179 if (memcmp(srx, &rx->srx, sizeof(*srx)) != 0)
181 rx->second_service = service_id;
182 rx->sk.sk_state = RXRPC_SERVER_BOUND2;
190 release_sock(&rx->sk);
200 release_sock(&rx->sk);
212 struct rxrpc_sock *rx = rxrpc_sk(sk);
216 _enter("%p,%d", rx, backlog);
218 lock_sock(&rx->sk);
220 switch (rx->sk.sk_state) {
226 ASSERT(rx->local != NULL);
235 ret = rxrpc_service_prealloc(rx, GFP_KERNEL);
237 rx->sk.sk_state = RXRPC_SERVER_LISTENING;
243 rx->sk.sk_state = RXRPC_SERVER_LISTEN_DISABLED;
245 rxrpc_discard_prealloc(rx);
255 release_sock(&rx->sk);
294 struct rxrpc_sock *rx = rxrpc_sk(sock->sk);
299 ret = rxrpc_validate_address(rx, srx, sizeof(*srx));
303 lock_sock(&rx->sk);
306 key = rx->key;
317 cp.local = rx->local;
319 cp.security_level = rx->min_sec_level;
323 call = rxrpc_new_client_call(rx, &cp, srx, &p, gfp, debug_id);
413 struct rxrpc_sock *rx = rxrpc_sk(sock->sk);
415 rx->notify_new_call = notify_new_call;
416 rx->discard_new_call = discard_new_call;
454 struct rxrpc_sock *rx = rxrpc_sk(sock->sk);
457 _enter("%p,%p,%d,%d", rx, addr, addr_len, flags);
459 ret = rxrpc_validate_address(rx, srx, addr_len);
465 lock_sock(&rx->sk);
468 if (test_bit(RXRPC_SOCK_CONNECTED, &rx->flags))
471 switch (rx->sk.sk_state) {
473 rx->sk.sk_state = RXRPC_CLIENT_UNBOUND;
482 rx->connect_srx = *srx;
483 set_bit(RXRPC_SOCK_CONNECTED, &rx->flags);
487 release_sock(&rx->sk);
503 struct rxrpc_sock *rx = rxrpc_sk(sock->sk);
506 _enter(",{%d},,%zu", rx->sk.sk_state, len);
512 ret = rxrpc_validate_address(rx, m->msg_name, m->msg_namelen);
519 lock_sock(&rx->sk);
521 switch (rx->sk.sk_state) {
524 rx->srx.srx_family = AF_RXRPC;
525 rx->srx.srx_service = 0;
526 rx->srx.transport_type = SOCK_DGRAM;
527 rx->srx.transport.family = rx->family;
528 switch (rx->family) {
530 rx->srx.transport_len = sizeof(struct sockaddr_in);
534 rx->srx.transport_len = sizeof(struct sockaddr_in6);
541 local = rxrpc_lookup_local(sock_net(sock->sk), &rx->srx);
547 rx->local = local;
548 rx->sk.sk_state = RXRPC_CLIENT_BOUND;
553 test_bit(RXRPC_SOCK_CONNECTED, &rx->flags)) {
554 m->msg_name = &rx->connect_srx;
555 m->msg_namelen = sizeof(rx->connect_srx);
560 ret = rxrpc_do_sendmsg(rx, m, len);
569 release_sock(&rx->sk);
594 struct rxrpc_sock *rx = rxrpc_sk(sock->sk);
601 lock_sock(&rx->sk);
611 if (rx->sk.sk_state != RXRPC_UNBOUND)
613 rx->exclusive = true;
618 if (rx->key)
621 if (rx->sk.sk_state != RXRPC_UNBOUND)
623 ret = rxrpc_request_key(rx, optval, optlen);
628 if (rx->key)
631 if (rx->sk.sk_state != RXRPC_UNBOUND)
633 ret = rxrpc_server_keyring(rx, optval, optlen);
641 if (rx->sk.sk_state != RXRPC_UNBOUND)
650 rx->min_sec_level = min_sec_level;
656 rx->service_upgrade.from != 0)
659 if (rx->sk.sk_state != RXRPC_SERVER_BOUND2)
666 if ((service_upgrade[0] != rx->srx.srx_service ||
667 service_upgrade[1] != rx->second_service) &&
668 (service_upgrade[0] != rx->second_service ||
669 service_upgrade[1] != rx->srx.srx_service))
671 rx->service_upgrade.from = service_upgrade[0];
672 rx->service_upgrade.to = service_upgrade[1];
683 release_sock(&rx->sk);
722 struct rxrpc_sock *rx = rxrpc_sk(sk);
730 if (!list_empty(&rx->recvmsg_q))
749 struct rxrpc_sock *rx;
776 rx = rxrpc_sk(sk);
777 rx->family = protocol;
778 rx->calls = RB_ROOT;
780 spin_lock_init(&rx->incoming_lock);
781 INIT_LIST_HEAD(&rx->sock_calls);
782 INIT_LIST_HEAD(&rx->to_be_accepted);
783 INIT_LIST_HEAD(&rx->recvmsg_q);
784 rwlock_init(&rx->recvmsg_lock);
785 rwlock_init(&rx->call_lock);
786 memset(&rx->srx, 0, sizeof(rx->srx));
788 rxnet = rxrpc_net(sock_net(&rx->sk));
791 _leave(" = 0 [%p]", rx);
801 struct rxrpc_sock *rx = rxrpc_sk(sk);
822 rxrpc_discard_prealloc(rx);
852 struct rxrpc_sock *rx = rxrpc_sk(sk);
869 rx->local->service_closed = true;
877 if (rx->local && rcu_access_pointer(rx->local->service) == rx) {
878 write_lock(&rx->local->services_lock);
879 rcu_assign_pointer(rx->local->service, NULL);
880 write_unlock(&rx->local->services_lock);
884 rxrpc_discard_prealloc(rx);
885 rxrpc_release_calls_on_socket(rx);
889 rxrpc_unuse_local(rx->local);
890 rxrpc_put_local(rx->local);
891 rx->local = NULL;
892 key_put(rx->key);
893 rx->key = NULL;
894 key_put(rx->securities);
895 rx->securities = NULL;