summaryrefslogtreecommitdiff
path: root/cp2/sta/action/misc.h
diff options
context:
space:
mode:
Diffstat (limited to 'cp2/sta/action/misc.h')
-rw-r--r--cp2/sta/action/misc.h117
1 files changed, 117 insertions, 0 deletions
diff --git a/cp2/sta/action/misc.h b/cp2/sta/action/misc.h
new file mode 100644
index 0000000000..8a9b717578
--- /dev/null
+++ b/cp2/sta/action/misc.h
@@ -0,0 +1,117 @@
+#ifndef misc_h
+#define misc_h
+/* Cesar project {{{
+ *
+ * Copyright (C) 2008 Spidcom
+ *
+ * <<<Licence>>>
+ *
+ * }}} */
+/**
+ * \file misc.h
+ * \brief STA action, miscellaneous definitions.
+ * \ingroup cp_sta
+ *
+ * Miscellaneous
+ * =============
+ *
+ * This part handle other miscellaneous STA function, most of theses are
+ * simple enough to be handled without any remembered state.
+ */
+
+BEGIN_DECLS
+
+/**
+ * Process a CC_WHO_RU.REQ, 11.2.26.
+ * \param ctx control plane context
+ * \param mme received MME handle
+ * \param nid NID of network being queried
+ *
+ * Provide AVLN identity and CCo MAC address. If the NID correspond to our
+ * NID, send a CC_WHO_RU.CNF. In other cases, drop.
+ *
+ * Need:
+ * - our CCo MAC address.
+ * - our AVLN HFID.
+ */
+void
+cp_sta_action_process_cc_who_ru_req (cp_t *ctx, cp_mme_t *mme, cp_nid_t nid);
+
+/**
+ * Process a CC_SET_TEI_MAP.IND, 11.2.35.
+ * \param ctx control plane context
+ * \param mme received MME handle
+ * \param mode update, add or remove
+ *
+ * The CCo send an update of the AVLN list of STA. According to the mode,
+ * update the whole list, add or remove a STA.
+ *
+ * Need:
+ * - use a cp_msg function to read the rest of the message.
+ *
+ * Update:
+ * - STA mgr.
+ */
+void
+cp_sta_action_process_cc_set_tei_map_ind_update (
+ cp_t *ctx, cp_mme_t *mme, cp_msg_cc_set_tei_map_ind_mode_t mode);
+
+/**
+ * Process a CC_RELAY.REQ, 11.2.36.
+ * \param ctx control plane context
+ * \param mme received MME handle
+ * \param fda final destination address
+ * \param ftei final destination TEI
+ * \param len payload size
+ *
+ * Extract the payload from the MME, and encapsulate it in a CC_RELAY.IND to
+ * the final destination.
+ *
+ * There is special behaviour depending on the contained payload. If the
+ * relay request is not encrypted, only relay MME which are permitted to be
+ * unencrypted. If the relay request is not encrypted and contains a
+ * CM_ENCRYPTED_PAYLOAD.IND, the CC_RELAY.IND should be sent broadcast. This
+ * could be done by the cp_msg module.
+ *
+ * - What to do with the MAC address?
+ */
+void
+cp_sta_action_process_cc_relay_req (cp_t *ctx, cp_mme_t *mme, mac_t fda,
+ cp_tei_t ftei, uint len);
+
+/**
+ * Process a CC_RELAY.IND, 11.2.37.
+ * \param ctx control plane context
+ * \param mme received MME handle
+ * \param osa original source address
+ * \param otei original source TEI
+ * \param len payload size
+ *
+ * Extract the payload and insert the message back.
+ *
+ * Relay station is trusted as long as it is authenticated. It should have
+ * filtered unauthorised payload.
+ */
+void
+cp_sta_action_process_cc_relay_ind (cp_t *ctx, cp_mme_t *mme, mac_t osa,
+ cp_tei_t otei, uint len);
+
+/**
+ * Process a CM_MME_ERROR.IND, 11.5.32.
+ * \param ctx control plane context
+ * \param mme received MME handle
+ * \param reason reason of the error
+ * \param rx_mmv MMV of the erroneous MME
+ * \param rx_mmtype MMTYPE of the erroneous MME
+ * \param invalid_byte_offset offset in the MME of the error
+ *
+ * Used for debug. Trace the error.
+ */
+void
+cp_sta_action_process_cm_mme_error_ind (
+ cp_t *ctx, cp_mme_t *mme, cp_msg_cm_mme_error_ind_reason_t reason,
+ u8 rx_mmv, u16 rx_mmtype, u16 invalid_byte_offset);
+
+END_DECLS
+
+#endif /* misc_h */