Lines Matching full:be
8 that can be used to perform RxRPC remote operations. This is done over sockets
68 manage security on the client end. The server end must of necessity be
99 endpoint, thus allowing the endpoints to be shared, even to the same
103 to multiple services. A service may be considered the RxRPC equivalent of
106 (#) Client-originating packets are marked, thus a transport endpoint can be
110 (#) Up to a billion connections may be supported concurrently between one
123 billion calls, but only up to four calls may be in progress on a
143 connection lapse before the client, the security will be renegotiated if
152 been received but may yet be discarded and re-requested. The sender may
162 (#) An call may be aborted by either end at any time up to its completion.
174 connections are handled transparently. One client socket may be used to
178 (#) Additional parallel client connections will be initiated to support extra
191 would otherwise share the connection). Non-secured calls would also be
202 (#) If an ICMP error is received, all calls affected by that error will be
214 (#) The first sendmsg for a request to be sent from a client contains a tag to
215 be used in all other sendmsgs or recvmsgs associated with that call. The
219 socket. This may be overridden by supplying an alternate address to the
225 (#) A server socket may also be used to make client calls. To do this, the
230 the tag is guaranteed not to be seen again, and so it can be used to pin
231 client resources. A new call can then be initiated with the same tag
247 (#) A call may be aborted by adding an abort control message to the control
249 Any messages waiting in the receive queue for that call will be discarded.
252 and control data messages will be set to indicate the context. Receiving
269 is done, the first part of the request data will be delivered by recvmsg.
284 (#) MSG_WAITALL can be set to tell sendmsg to ignore signals if the peer is
314 then the remainder of that message will be left on the front of the queue
315 for the next taker. MSG_TRUNC will never be flagged.
317 (4) If there is more data to be had on a call (it hasn't copied the last byte
318 of the last data message in that phase yet), then MSG_MORE will be
340 RXRPC_UPGRADE_SERVICE s-- n/a Client call can be upgraded
356 This is can be used by an application to abort a call by passing it to
357 sendmsg, or it can be delivered by recvmsg to indicate a remote abort was
358 received. Either way, it must be associated with an RXRPC_USER_CALL_ID to
360 will be returned if there is no call with that user ID.
365 of a call was received from the client. It will be associated with an
372 errno-class integer value will be included in the control message data
379 rejected by the server due to the server being busy. It will be
386 errno-class integer value will be included in the control message data
394 as a user ID must subsequently be assigned by doing an RXRPC_ACCEPT.
399 assign it a user ID. It should be associated with an RXRPC_USER_CALL_ID
400 to indicate the user ID to be assigned. If there is no call to be
403 then error EBADSLT will be returned.
407 This is used to indicate that a client call should be made on a one-off
413 may be upgraded by the server. The caller must check msg_name returned to
415 be one that takes the same arguments in both services.
418 thereof) of the server, the service ID returned should be used for all
420 longer be set.
425 going to be transmitted by a call (whether in a client request or a
428 the buffer and then encrypting in place. This may only be given with the
429 first sendmsg() providing data for a call. EMSGSIZE will be generated if
432 This takes a parameter of __s64 type that indicates how much will be
433 transmitted. This may not be less than zero.
436 message type supported. At run time this can be queried by means of the
448 This is used to specify the description of the key to be used. The key is
450 should be of "rxrpc" type.
462 This is used to request that new connections should be used for each call
463 made subsequently on this socket. optval should be NULL and optlen 0.
503 (security index 2 - rxkad). This requires the rxkad module to be loaded and,
504 on the client, tickets of the appropriate type to be obtained from the AFS
506 normally done using the klog program. An example simple klog program can be
511 The payload provided to add_key() on the client should be of the following
527 For the server, keys of type "rxrpc_s" must be made available to the server.
529 rxkad key for the AFS VL service). When such a key is created, it should be
537 incoming connections are made. This can be seen in an example program that can
538 be found at:
554 socket used - usually IPv4 but it can also be IPv6 [TODO].
556 (2) A local address can optionally be bound::
568 This specifies the local UDP port to be used. If not given, a random
569 non-privileged port will be used. A UDP port may be shared between
579 context. The minimum security level can be set::
585 (4) The server to be contacted can then be specified (alternatively this can
586 be done through sendmsg)::
598 (5) The request data should then be posted to the server socket using a series
605 MSG_MORE should be set in msghdr::msg_flags on all but the last part of
606 the request. Multiple requests may be made simultaneously.
608 An RXRPC_TX_LENGTH control message can also be specified on the first
612 specified through connect(), then msghdr::msg_name should be set on the
615 (6) The reply data will then be posted to the server socket for recvmsg() to
616 pick up. MSG_MORE will be flagged by recvmsg() if there's more reply data
617 for a particular call to be read. MSG_EOR will be set on the terminal
620 All data will be delivered with the following control message attached:
624 If an abort or error occurred, this will be returned in the control data
625 buffer instead, and MSG_EOR will be flagged to indicate the end of that
628 A client may ask for a service ID it knows and ask that this be upgraded to a
633 the service - otherwise it will be altered to indicate the service ID the
636 any more calls (further calls to the same destination will be blocked until the
643 A server would be set up to accept operations in the following manner:
664 The keyring can be manipulated after it has been given to the socket. This
667 (3) A local address must then be bound::
679 More than one service ID may be bound to a socket, provided the transport
681 should be called twice.
684 bound and then the following option must be set::
691 to_ID if they request it. This will be reflected in msg_name obtained
705 The address that can be passed back by recvmsg() at this point should be
708 will be accepted.
718 (8) The first request data packet will then be posted to the server socket for
720 be read from the address fields in the msghdr struct.
722 Subsequent request data will be posted to the server socket for recvmsg()
724 be delivered with MSG_MORE flagged.
726 All data will be delivered with the following control message attached:
733 (9) The reply data should then be posted to the server socket using a series
740 MSG_MORE should be set in msghdr::msg_flags on all but the last message
743 (10) The final ACK from the client will be posted for retrieval by recvmsg()
752 MSG_EOR will be flagged to indicate that this is the final message for
755 (11) Up to the point the final packet of reply data is sent, the call can be
764 Any packets waiting in the socket's receive queue will be discarded if
790 (4) Avoid the overhead of using the recvmsg() call. RxRPC messages can be
795 bind an address as appropriate and listen if it's to be a server socket, but
815 call and connection numbers. The call will be made on the UDP port that
820 If a key is supplied then this will be used to secure the call instead of
831 saving a copy. The value may not be less than -1.
833 notify_rx is a pointer to a function to be called when events such as
836 upgrade should be set to true if a client operation should request that
840 intr should be set to true if the call should be interruptible. If this
844 debug_id is the call debugging ID to be used for tracing. This can be
848 returned. The caller now holds a reference on this and it must be
857 from AF_RXRPC's knowledge and will not be seen again in association with
874 data buffers to be used. msg_iov may not be NULL and must point
875 exclusively to in-kernel virtual addresses. msg.msg_flags may be given
876 MSG_MORE if there will be subsequent data sends for this call.
881 notify_end_rx can be NULL or it can be used to specify a function to be
903 want_more should be true if further data will be required after this is
908 emptied and want_more was false; and -EAGAIN if the function needs to be
915 If a remote ABORT is detected, the abort code received will be stored in
916 ``*_abort`` and ECONNABORTED will be returned.
919 This can be used to see if a call got a service upgrade.
930 abort code specified will be placed in the ABORT message sent.
944 then diverted to this function. Note that care must be taken to process
965 The remote abort message can be probed with rxrpc_kernel_get_abort_code().
966 The two error messages can be probed with rxrpc_kernel_get_error_number().
967 A new call can be accepted with rxrpc_kernel_accept_call().
970 socket buffer manipulation functions. A data message can be determined to
971 be the last one in a sequence with rxrpc_kernel_is_data_last(). When a
972 data message has been used up, rxrpc_kernel_data_consumed() should be
975 Messages should be handled to rxrpc_kernel_free_skb() to dispose of. It
987 be ended in the same way.
990 returned. The caller now holds a reference on this and it must be
999 Other errors may be returned if the call had been aborted (-ECONNABORTED)
1006 This is used to allocate a null RxRPC key that can be used to indicate
1023 call. It's intended to be used for setting the reply size as the request
1024 size should be set when the call is begun. tx_total_len may not be less
1053 The second function causes a ping ACK to be transmitted to try to provoke
1055 first function to change. Note that this must be called in TASK_RUNNING
1065 client call to be queried, provided that it is still in the Rx ring. If
1066 successful, the timestamp will be stored into ``*_ts`` and true will be
1067 returned; false will be returned otherwise.
1075 call to be queried. This value is returned. The function always
1076 successful if the call is still in progress. It shouldn't be called once
1080 This value can be used to determine if the remote client has been
1090 jiffies). In the event of the timeout occurring, the call will be
1091 aborted and -ETIME or -ETIMEDOUT will be returned.
1106 The RxRPC protocol driver has a number of configurable parameters that can be
1117 ACK permits several packets to be ACK'd in one go.
1139 The maximum amount of time in seconds that a call may be in progress
1153 the security must be renegotiated.