diff options
author | David S. Miller <davem@davemloft.net> | 2016-04-11 15:34:42 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-04-11 15:34:42 -0400 |
commit | 7c3da7d0d4f3506ef70d9cf148a22400477854d0 (patch) | |
tree | 717c4bd8d4a001016917688b38ce767ecf79ce39 /net/rxrpc/insecure.c | |
parent | c64a73d584cc344915baee1183c791c0d0c42d79 (diff) | |
parent | e0e4d82f3be60cfe8b10304c6daf3ca5973ae9e3 (diff) |
Merge branch 'rprpc-2nd-rewrite-part-1'
David Howells says:
====================
RxRPC: 2nd rewrite part 1
Okay, I'm in the process of rewriting the RxRPC rewrite. The primary aim of
this second rewrite is to strictly control the number of active connections we
know about and to get rid of connections we don't need much more quickly.
On top of this, there are fixes to the protocol handling which will all occur
in later parts.
Here's the first set of patches from the second go, aimed at net-next. These
are all fixes and cleanups preparatory to the main event.
Notable parts of this set include:
(1) A fix for the AFS filesystem to wait for outstanding calls to complete
before closing the RxRPC socket.
(2) Differentiation of local and remote abort codes. At a future point
userspace will get to see this via control message data on recvmsg().
(3) Absorb the rxkad module into the af_rxrpc module to prevent a dependency
loop.
(4) Create a null security module and unconditionalise calls into the
security module that's in force (there will always be a security module
applied to a connection, even if it's just the null one).
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/rxrpc/insecure.c')
-rw-r--r-- | net/rxrpc/insecure.c | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/net/rxrpc/insecure.c b/net/rxrpc/insecure.c new file mode 100644 index 000000000000..e571403613c1 --- /dev/null +++ b/net/rxrpc/insecure.c | |||
@@ -0,0 +1,83 @@ | |||
1 | /* Null security operations. | ||
2 | * | ||
3 | * Copyright (C) 2016 Red Hat, Inc. All Rights Reserved. | ||
4 | * Written by David Howells (dhowells@redhat.com) | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or | ||
7 | * modify it under the terms of the GNU General Public Licence | ||
8 | * as published by the Free Software Foundation; either version | ||
9 | * 2 of the Licence, or (at your option) any later version. | ||
10 | */ | ||
11 | |||
12 | #include <net/af_rxrpc.h> | ||
13 | #include "ar-internal.h" | ||
14 | |||
15 | static int none_init_connection_security(struct rxrpc_connection *conn) | ||
16 | { | ||
17 | return 0; | ||
18 | } | ||
19 | |||
20 | static void none_prime_packet_security(struct rxrpc_connection *conn) | ||
21 | { | ||
22 | } | ||
23 | |||
24 | static int none_secure_packet(const struct rxrpc_call *call, | ||
25 | struct sk_buff *skb, | ||
26 | size_t data_size, | ||
27 | void *sechdr) | ||
28 | { | ||
29 | return 0; | ||
30 | } | ||
31 | |||
32 | static int none_verify_packet(const struct rxrpc_call *call, | ||
33 | struct sk_buff *skb, | ||
34 | u32 *_abort_code) | ||
35 | { | ||
36 | return 0; | ||
37 | } | ||
38 | |||
39 | static int none_respond_to_challenge(struct rxrpc_connection *conn, | ||
40 | struct sk_buff *skb, | ||
41 | u32 *_abort_code) | ||
42 | { | ||
43 | *_abort_code = RX_PROTOCOL_ERROR; | ||
44 | return -EPROTO; | ||
45 | } | ||
46 | |||
47 | static int none_verify_response(struct rxrpc_connection *conn, | ||
48 | struct sk_buff *skb, | ||
49 | u32 *_abort_code) | ||
50 | { | ||
51 | *_abort_code = RX_PROTOCOL_ERROR; | ||
52 | return -EPROTO; | ||
53 | } | ||
54 | |||
55 | static void none_clear(struct rxrpc_connection *conn) | ||
56 | { | ||
57 | } | ||
58 | |||
59 | static int none_init(void) | ||
60 | { | ||
61 | return 0; | ||
62 | } | ||
63 | |||
64 | static void none_exit(void) | ||
65 | { | ||
66 | } | ||
67 | |||
68 | /* | ||
69 | * RxRPC Kerberos-based security | ||
70 | */ | ||
71 | const struct rxrpc_security rxrpc_no_security = { | ||
72 | .name = "none", | ||
73 | .security_index = RXRPC_SECURITY_NONE, | ||
74 | .init = none_init, | ||
75 | .exit = none_exit, | ||
76 | .init_connection_security = none_init_connection_security, | ||
77 | .prime_packet_security = none_prime_packet_security, | ||
78 | .secure_packet = none_secure_packet, | ||
79 | .verify_packet = none_verify_packet, | ||
80 | .respond_to_challenge = none_respond_to_challenge, | ||
81 | .verify_response = none_verify_response, | ||
82 | .clear = none_clear, | ||
83 | }; | ||