aboutsummaryrefslogtreecommitdiffstats
path: root/hicn-light/src/hicn/core/messageHandler.h
diff options
context:
space:
mode:
authorJordan Augé <jordan.auge+fdio@cisco.com>2019-07-26 23:20:30 +0200
committerMauro Sardara <msardara@cisco.com>2019-07-29 17:13:35 +0200
commit0a1c6b5565e20167d1f1f33a5a8b597f420b18b0 (patch)
tree98c5da8f231fbd3dc2ce6502040e29c8333d9ffc /hicn-light/src/hicn/core/messageHandler.h
parent05ca0aa8f612ee48fb66d4dbebe596b7f1e03181 (diff)
[HICN-252] Add per-application policy framework to hicn-light forwarder
Change-Id: I0531cd7a7de179581295ae34766c81cd9cf3e172 Signed-off-by: Jordan Augé <jordan.auge+fdio@cisco.com> Signed-off-by: Mauro Sardara <msardara@cisco.com> Co-authored-by: Mauro Sardara <msardara@cisco.com>
Diffstat (limited to 'hicn-light/src/hicn/core/messageHandler.h')
-rw-r--r--hicn-light/src/hicn/core/messageHandler.h73
1 files changed, 17 insertions, 56 deletions
diff --git a/hicn-light/src/hicn/core/messageHandler.h b/hicn-light/src/hicn/core/messageHandler.h
index c1fc0481a..74535d80f 100644
--- a/hicn-light/src/hicn/core/messageHandler.h
+++ b/hicn-light/src/hicn/core/messageHandler.h
@@ -55,6 +55,11 @@
#include <hicn/core/forwarder.h>
+#ifdef WITH_MAPME
+#include <hicn/core/mapMe.h>
+#include <hicn/socket/api.h>
+#endif /* WITH_MAPME */
+
#define CONNECTION_ID_UNDEFINED -1
static inline uint8_t messageHandler_GetIPPacketType(const uint8_t *message) {
@@ -168,76 +173,32 @@ static inline uint8_t messageHandler_NextHeaderType(const uint8_t *message) {
/* Forward declarations */
static inline void * messageHandler_GetSource(const uint8_t *message);
-
-/* Helpers */
-
-// NOTE: this function is generalized from the one in hICN listener and takes a
-// forwarder as parameter
-static inline
-const Connection *
-_getConnectionFromPacket(Forwarder * forwarder, Address * localAddress, Address *packetSourceAddress)
-{
- if (!packetSourceAddress)
- return NULL;
-
- AddressPair *pair = addressPair_Create(localAddress,
- packetSourceAddress);
- const Connection * conn = connectionTable_FindByAddressPair(
- forwarder_GetConnectionTable(forwarder), pair);
- addressPair_Release(&pair);
-
- return conn;
-}
-
-static inline
-Address *
-_createAddressFromPacket(const uint8_t *msgBuffer)
-{
- Address *packetAddr = NULL;
- if (messageHandler_GetIPPacketType(msgBuffer) == IPv6_TYPE) {
- struct sockaddr_in6 addr_in6;
- addr_in6.sin6_family = AF_INET6;
- addr_in6.sin6_port = htons(1234);
- addr_in6.sin6_flowinfo = 0;
- addr_in6.sin6_scope_id = 0;
- memcpy(&addr_in6.sin6_addr,
- (struct in6_addr *)messageHandler_GetSource(msgBuffer), 16);
- packetAddr = addressCreateFromInet6(&addr_in6);
- } else if (messageHandler_GetIPPacketType(msgBuffer) == IPv4_TYPE) {
- struct sockaddr_in addr_in;
- addr_in.sin_family = AF_INET;
- addr_in.sin_port = htons(1234);
- memcpy(&addr_in.sin_addr,
- (struct in_addr *)messageHandler_GetSource(msgBuffer), 4);
- packetAddr = addressCreateFromInet(&addr_in);
- }
- return packetAddr;
-}
-
-/* Hooks */
-
-/* ... */
+static inline void *messageHandler_GetDestination(const uint8_t *message);
/* Main hook handler */
/**
* \brief Handle incoming messages
* \param [in] forwarder - Reference to the Forwarder instance
- * \param [in] connection_id - A hint on the connection ID on which the packet
- * was received, CONNECTION_ID_UNDEFINED (-1) otherwise.
- * \param [in] localAddress - Local listener address
- * \param [in] messsage - Buffer possibly containing a hooked message
+ * \param [in] packet - Packet buffer
+ * \param [in] conn_id - A hint on the connection ID on which the packet
+ * was received
* \return Flag indicating whether the packet matched a hook and was
* (successfully or not) processed.
*/
static inline bool messageHandler_handleHooks(Forwarder * forwarder,
- int connection_id, Address * localAddress, const uint8_t * message)
+ const uint8_t * packet, int conn_id)
{
- /* ... */
+#ifdef WITH_MAPME
+ if (mapMe_isMapMe(packet)) {
+ forwarder_ProcessMapMe(forwarder, packet, conn_id);
+ goto END;
+ }
+#endif /* WITH_MAPME */
return false;
-#if 0 // Enable and jump here when a handler has successfully processed the packet
+#if 1 // Enable and jump here when a handler has successfully processed the packet
END:
return true;
#endif