summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick McHardy <kaber@trash.net>2011-02-24 21:47:07 +0100
committerPatrick McHardy <kaber@trash.net>2011-02-24 21:47:07 +0100
commit3b1c1f5e44814c252c127c12b1bc02dcf554ecbc (patch)
tree56a6710f327b35d2aedbac73d57728e43f02853f
parent601c3808c14bceba7de079412f90aeee723fe1dd (diff)
mm: convert -res primitives to return void
There is no reasonable way for the caller to respond to an error returned by a -res primitive, the initiator is responsible for resending the request. Change all MM -res primitives to complete the procedure on error and return void. Signed-off-by: Patrick McHardy <kaber@trash.net>
-rw-r--r--include/dect/mm.h34
-rw-r--r--src/mm.c145
2 files changed, 69 insertions, 110 deletions
diff --git a/include/dect/mm.h b/include/dect/mm.h
index 8770714..f2e0e06 100644
--- a/include/dect/mm.h
+++ b/include/dect/mm.h
@@ -337,51 +337,51 @@ struct dect_mm_ops {
extern int dect_mm_access_rights_req(struct dect_handle *dh, struct dect_mm_endpoint *mme,
const struct dect_mm_access_rights_param *param);
-extern int dect_mm_access_rights_res(struct dect_handle *dh, struct dect_mm_endpoint *mme,
- bool accept, const struct dect_mm_access_rights_param *param);
+extern void dect_mm_access_rights_res(struct dect_handle *dh, struct dect_mm_endpoint *mme,
+ bool accept, const struct dect_mm_access_rights_param *param);
extern int dect_mm_access_rights_terminate_req(struct dect_handle *dh, struct dect_mm_endpoint *mme,
const struct dect_mm_access_rights_terminate_param *param);
-extern int dect_mm_access_rights_terminate_res(struct dect_handle *dh, struct dect_mm_endpoint *mme,
- bool accept, const struct dect_mm_access_rights_terminate_param *param);
+extern void dect_mm_access_rights_terminate_res(struct dect_handle *dh, struct dect_mm_endpoint *mme,
+ bool accept, const struct dect_mm_access_rights_terminate_param *param);
extern int dect_mm_key_allocate_req(struct dect_handle *dh, struct dect_mm_endpoint *mme,
const struct dect_mm_key_allocate_param *param);
extern int dect_mm_authenticate_req(struct dect_handle *dh, struct dect_mm_endpoint *mme,
const struct dect_mm_authenticate_param *param);
-extern int dect_mm_authenticate_res(struct dect_handle *dh, struct dect_mm_endpoint *mme,
- bool accept, const struct dect_mm_authenticate_param *param);
+extern void dect_mm_authenticate_res(struct dect_handle *dh, struct dect_mm_endpoint *mme,
+ bool accept, const struct dect_mm_authenticate_param *param);
extern int dect_mm_cipher_req(struct dect_handle *dh, struct dect_mm_endpoint *mme,
const struct dect_mm_cipher_param *param,
const uint8_t ck[]);
-extern int dect_mm_cipher_res(struct dect_handle *dh, struct dect_mm_endpoint *mme,
- bool accept, const struct dect_mm_cipher_param *param,
- const uint8_t ck[]);
+extern void dect_mm_cipher_res(struct dect_handle *dh, struct dect_mm_endpoint *mme,
+ bool accept, const struct dect_mm_cipher_param *param,
+ const uint8_t ck[]);
extern int dect_mm_locate_req(struct dect_handle *dh, struct dect_mm_endpoint *mme,
const struct dect_mm_locate_param *param);
-extern int dect_mm_locate_res(struct dect_handle *dh, struct dect_mm_endpoint *mme,
- bool accept, const struct dect_mm_locate_param *param);
+extern void dect_mm_locate_res(struct dect_handle *dh, struct dect_mm_endpoint *mme,
+ bool accept, const struct dect_mm_locate_param *param);
extern int dect_mm_detach_req(struct dect_handle *dh, struct dect_mm_endpoint *mme,
struct dect_mm_detach_param *param);
extern int dect_mm_identity_req(struct dect_handle *dh, struct dect_mm_endpoint *mme,
const struct dect_mm_identity_param *param);
-extern int dect_mm_identity_res(struct dect_handle *dh, struct dect_mm_endpoint *mme,
- const struct dect_mm_identity_param *param);
+extern void dect_mm_identity_res(struct dect_handle *dh, struct dect_mm_endpoint *mme,
+ const struct dect_mm_identity_param *param);
extern int dect_mm_identity_assign_req(struct dect_handle *dh, struct dect_mm_endpoint *mme,
const struct dect_mm_identity_assign_param *param);
-extern int dect_mm_identity_assign_res(struct dect_handle *dh, struct dect_mm_endpoint *mme,
- bool accept, const struct dect_mm_identity_assign_param *param);
+extern void dect_mm_identity_assign_res(struct dect_handle *dh, struct dect_mm_endpoint *mme,
+ bool accept, const struct dect_mm_identity_assign_param *param);
extern int dect_mm_info_req(struct dect_handle *dh, struct dect_mm_endpoint *mme,
struct dect_mm_info_param *param);
-extern int dect_mm_info_res(struct dect_handle *dh, struct dect_mm_endpoint *mme,
- bool accept, struct dect_mm_info_param *param);
+extern void dect_mm_info_res(struct dect_handle *dh, struct dect_mm_endpoint *mme,
+ bool accept, struct dect_mm_info_param *param);
extern int dect_mm_iwu_req(struct dect_handle *dh, struct dect_mm_endpoint *mme,
const struct dect_mm_iwu_param *param);
diff --git a/src/mm.c b/src/mm.c
index aa92150..fd2ee09 100644
--- a/src/mm.c
+++ b/src/mm.c
@@ -886,28 +886,23 @@ static int dect_mm_send_authenticate_reject(const struct dect_handle *dh,
*
* Respond to an authentication request and complete the authentication procedure.
*/
-int dect_mm_authenticate_res(struct dect_handle *dh,
- struct dect_mm_endpoint *mme, bool accept,
- const struct dect_mm_authenticate_param *param)
+void dect_mm_authenticate_res(struct dect_handle *dh,
+ struct dect_mm_endpoint *mme, bool accept,
+ const struct dect_mm_authenticate_param *param)
{
struct dect_mm_procedure *mp = mme->current;
- int err;
mm_debug_entry(mme, "MM_AUTHENTICATE-res: accept: %u", accept);
if (mp->type != DECT_MMP_AUTHENTICATE &&
mp->type != DECT_MMP_KEY_ALLOCATION)
- return -1;
+ return;
if (accept)
- err = dect_mm_send_authenticate_reply(dh, mme, param);
+ dect_mm_send_authenticate_reply(dh, mme, param);
else
- err = dect_mm_send_authenticate_reject(dh, mme, param);
-
- if (err < 0)
- return err;
+ dect_mm_send_authenticate_reject(dh, mme, param);
dect_mm_procedure_complete(dh, mme);
- return 0;
}
EXPORT_SYMBOL(dect_mm_authenticate_res);
@@ -1145,33 +1140,25 @@ static int dect_mm_send_cipher_reject(const struct dect_handle *dh,
* @param param cipher respond parameters
* @param ck cipher key
*/
-int dect_mm_cipher_res(struct dect_handle *dh, struct dect_mm_endpoint *mme,
- bool accept, const struct dect_mm_cipher_param *param,
- const uint8_t ck[])
+void dect_mm_cipher_res(struct dect_handle *dh, struct dect_mm_endpoint *mme,
+ bool accept, const struct dect_mm_cipher_param *param,
+ const uint8_t ck[])
{
struct dect_mm_procedure *mp = &mme->procedure[DECT_TRANSACTION_RESPONDER];
- int err;
mm_debug_entry(mme, "MM_CIPHER-res: accept: %u", accept);
if (mp->type != DECT_MMP_CIPHER)
- return -1;
+ return;
if (accept) {
- err = dect_ddl_set_cipher_key(mme->link, ck);
- if (err < 0)
- goto err1;
-
- err = dect_ddl_encrypt_req(mme->link, DECT_CIPHER_ENABLED);
- if (err < 0)
- goto err1;
+ if (dect_ddl_set_cipher_key(mme->link, ck) < 0)
+ goto out;
+ dect_ddl_encrypt_req(mme->link, DECT_CIPHER_ENABLED);
} else
- err = dect_mm_send_cipher_reject(dh, mme, param);
+ dect_mm_send_cipher_reject(dh, mme, param);
+out:
dect_mm_procedure_complete(dh, mme);
- return 0;
-
-err1:
- return err;
}
EXPORT_SYMBOL(dect_mm_cipher_res);
@@ -1443,17 +1430,16 @@ static int dect_mm_send_access_rights_reject(const struct dect_handle *dh,
*
* Respond to an access rights request and complete the access rights procedure.
*/
-int dect_mm_access_rights_res(struct dect_handle *dh,
- struct dect_mm_endpoint *mme, bool accept,
- const struct dect_mm_access_rights_param *param)
+void dect_mm_access_rights_res(struct dect_handle *dh,
+ struct dect_mm_endpoint *mme, bool accept,
+ const struct dect_mm_access_rights_param *param)
{
struct dect_mm_procedure *mp = &mme->procedure[DECT_TRANSACTION_RESPONDER];
const struct dect_mm_access_rights_param *req;
- int err;
mm_debug_entry(mme, "MM_ACCESS_RIGHTS-res: accept: %u", accept);
if (mp->type != DECT_MMP_ACCESS_RIGHTS)
- return -1;
+ return;
if (accept) {
req = (const struct dect_mm_access_rights_param *)mp->iec;
@@ -1461,15 +1447,11 @@ int dect_mm_access_rights_res(struct dect_handle *dh,
req->setup_capability,
req->terminal_capability);
- err = dect_mm_send_access_rights_accept(dh, mme, param);
+ dect_mm_send_access_rights_accept(dh, mme, param);
} else
- err = dect_mm_send_access_rights_reject(dh, mme, param);
-
- if (err < 0)
- return err;
+ dect_mm_send_access_rights_reject(dh, mme, param);
dect_mm_procedure_complete(dh, mme);
- return 0;
}
EXPORT_SYMBOL(dect_mm_access_rights_res);
@@ -1713,27 +1695,22 @@ static int dect_mm_send_access_rights_terminate_reject(const struct dect_handle
* Respond to an access rights termination request and complete the access
* rights termination procedure.
*/
-int dect_mm_access_rights_terminate_res(struct dect_handle *dh,
- struct dect_mm_endpoint *mme, bool accept,
- const struct dect_mm_access_rights_terminate_param *param)
+void dect_mm_access_rights_terminate_res(struct dect_handle *dh,
+ struct dect_mm_endpoint *mme, bool accept,
+ const struct dect_mm_access_rights_terminate_param *param)
{
struct dect_mm_procedure *mp = &mme->procedure[DECT_TRANSACTION_RESPONDER];
- int err;
mm_debug_entry(mme, "MM_ACCESS_RIGHTS_TERMINATE-res: accept: %u", accept);
if (mp->type != DECT_MMP_ACCESS_RIGHTS_TERMINATE)
- return -1;
+ return;
if (accept)
- err = dect_mm_send_access_rights_terminate_accept(dh, mme, param);
+ dect_mm_send_access_rights_terminate_accept(dh, mme, param);
else
- err = dect_mm_send_access_rights_terminate_reject(dh, mme, param);
-
- if (err < 0)
- return err;
+ dect_mm_send_access_rights_terminate_reject(dh, mme, param);
dect_mm_procedure_complete(dh, mme);
- return 0;
}
EXPORT_SYMBOL(dect_mm_access_rights_terminate_res);
@@ -1987,16 +1964,15 @@ static int dect_mm_send_locate_reject(const struct dect_handle *dh,
* @param accept accept/reject location registration/update
* @param param ccess rights response parameters
*/
-int dect_mm_locate_res(struct dect_handle *dh, struct dect_mm_endpoint *mme,
- bool accept, const struct dect_mm_locate_param *param)
+void dect_mm_locate_res(struct dect_handle *dh, struct dect_mm_endpoint *mme,
+ bool accept, const struct dect_mm_locate_param *param)
{
struct dect_mm_procedure *mp = &mme->procedure[DECT_TRANSACTION_RESPONDER];
const struct dect_mm_locate_param *req;
- int err;
mm_debug_entry(mme, "MM_LOCATE-res: accept: %u", accept);
if (mp->type != DECT_MMP_LOCATION_REGISTRATION)
- return -1;
+ return;
if (accept) {
req = (const struct dect_mm_locate_param *)mp->iec;
@@ -2004,12 +1980,10 @@ int dect_mm_locate_res(struct dect_handle *dh, struct dect_mm_endpoint *mme,
req->setup_capability,
req->terminal_capability);
- err = dect_mm_send_locate_accept(dh, mme, param);
+ if (dect_mm_send_locate_accept(dh, mme, param) < 0)
+ goto out;
} else
- err = dect_mm_send_locate_reject(dh, mme, param);
-
- if (err < 0)
- return err;
+ dect_mm_send_locate_reject(dh, mme, param);
/*
* TPUI or NWK identity assignment begins an identity assignment
@@ -2020,11 +1994,10 @@ int dect_mm_locate_res(struct dect_handle *dh, struct dect_mm_endpoint *mme,
param->nwk_assigned_identity)) {
mp->tpui = param->portable_identity->tpui;
mp->type = DECT_MMP_TEMPORARY_IDENTITY_ASSIGNMENT;
- return 0;
+ return;
}
-
+out:
dect_mm_procedure_complete(dh, mme);
- return 0;
}
EXPORT_SYMBOL(dect_mm_locate_res);
@@ -2328,17 +2301,16 @@ EXPORT_SYMBOL(dect_mm_identity_req);
* @param mme Mobility Management Endpoint
* @param param identity response parameters
*/
-int dect_mm_identity_res(struct dect_handle *dh,
- struct dect_mm_endpoint *mme,
- const struct dect_mm_identity_param *param)
+void dect_mm_identity_res(struct dect_handle *dh,
+ struct dect_mm_endpoint *mme,
+ const struct dect_mm_identity_param *param)
{
struct dect_mm_procedure *mp = &mme->procedure[DECT_TRANSACTION_RESPONDER];
struct dect_mm_identity_reply_msg msg;
- int err;
mm_debug_entry(mme, "MM_IDENTITY-res");
if (mp->type != DECT_MMP_IDENTIFICATION)
- return -1;
+ return;
memset(&msg, 0, sizeof(msg));
msg.portable_identity = param->portable_identity;
@@ -2348,13 +2320,10 @@ int dect_mm_identity_res(struct dect_handle *dh,
msg.model_identifier = param->model_identifier;
msg.escape_to_proprietary = param->escape_to_proprietary;
- err = dect_mm_send_msg(dh, mme, &mm_identity_reply_msg_desc,
- &msg.common, DECT_MM_IDENTITY_REPLY);
- if (err < 0)
- return err;
+ dect_mm_send_msg(dh, mme, &mm_identity_reply_msg_desc,
+ &msg.common, DECT_MM_IDENTITY_REPLY);
dect_mm_procedure_complete(dh, mme);
- return 0;
}
EXPORT_SYMBOL(dect_mm_identity_res);
@@ -2527,31 +2496,26 @@ static int dect_mm_send_temporary_identity_assign_rej(const struct dect_handle *
* @param accept accept/reject identity assignment
* @param param identity assigment response parameters
*/
-int dect_mm_identity_assign_res(struct dect_handle *dh,
- struct dect_mm_endpoint *mme, bool accept,
- const struct dect_mm_identity_assign_param *param)
+void dect_mm_identity_assign_res(struct dect_handle *dh,
+ struct dect_mm_endpoint *mme, bool accept,
+ const struct dect_mm_identity_assign_param *param)
{
struct dect_mm_procedure *mp = &mme->procedure[DECT_TRANSACTION_RESPONDER];
- int err;
mm_debug_entry(mme, "MM_IDENTITY_ASSIGN-res: accept: %u", accept);
if (mp->type != DECT_MMP_TEMPORARY_IDENTITY_ASSIGNMENT)
- return -1;
+ return;
if (accept) {
struct dect_mm_locate_param *lp = (struct dect_mm_locate_param *)mp->iec;
dect_assert(lp->portable_identity->type == DECT_PORTABLE_ID_TYPE_TPUI);
dect_pp_set_tpui(dh, &lp->portable_identity->tpui);
- err = dect_mm_send_temporary_identity_assign_ack(dh, mme, param);
+ dect_mm_send_temporary_identity_assign_ack(dh, mme, param);
} else
- err = dect_mm_send_temporary_identity_assign_rej(dh, mme, param);
-
- if (err < 0)
- return err;
+ dect_mm_send_temporary_identity_assign_rej(dh, mme, param);
dect_mm_procedure_complete(dh, mme);
- return 0;
}
EXPORT_SYMBOL(dect_mm_identity_assign_res);
@@ -2807,26 +2771,21 @@ static int dect_mm_send_info_reject(const struct dect_handle *dh,
* @param accept accept/reject info request
* @param param info parameters
*/
-int dect_mm_info_res(struct dect_handle *dh, struct dect_mm_endpoint *mme,
- bool accept, struct dect_mm_info_param *param)
+void dect_mm_info_res(struct dect_handle *dh, struct dect_mm_endpoint *mme,
+ bool accept, struct dect_mm_info_param *param)
{
struct dect_mm_procedure *mp = &mme->procedure[DECT_TRANSACTION_RESPONDER];
- int err;
mm_debug_entry(mme, "MM_INFO-res: accept: %u", accept);
if (mp->type != DECT_MMP_PARAMETER_RETRIEVAL)
- return -1;
+ return;
if (accept)
- err = dect_mm_send_info_accept(dh, mme, param);
+ dect_mm_send_info_accept(dh, mme, param);
else
- err = dect_mm_send_info_reject(dh, mme, param);
-
- if (err < 0)
- return err;
+ dect_mm_send_info_reject(dh, mme, param);
dect_mm_procedure_complete(dh, mme);
- return 0;
}
EXPORT_SYMBOL(dect_mm_info_res);