From 32dccec98e4c7d7e4ce902e19ba8d1b29b823758 Mon Sep 17 00:00:00 2001 From: Jordan Augé Date: Wed, 23 Sep 2020 17:50:52 +0200 Subject: [HICN-570] Message buffer (incl. CS and PIT changes) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I4c508e4b04dee3acbfc3da1d26e1770cb826f22b Signed-off-by: Jordan Augé --- hicn-light/src/hicn/core/name.c | 57 +++++++++++++++++++++++++---------------- 1 file changed, 35 insertions(+), 22 deletions(-) (limited to 'hicn-light/src/hicn/core/name.c') diff --git a/hicn-light/src/hicn/core/name.c b/hicn-light/src/hicn/core/name.c index d50ce4cc2..1b606d3c1 100644 --- a/hicn-light/src/hicn/core/name.c +++ b/hicn-light/src/hicn/core/name.c @@ -30,7 +30,9 @@ // assumption: the IPv6 address is the name, the TCP segment number is the ICN // segment -struct name { +// XXX leverage libhicn more here + +struct name_s { NameBitvector *content_name; uint32_t segment; uint32_t name_hash; @@ -71,33 +73,44 @@ static uint32_t _computeHash(Name *name) { // ============================================================================ Name * -name_CreateFromPacket(const uint8_t *packet, MessagePacketType type) +name_create_from_interest(const uint8_t * packet) { Name *name = malloc(sizeof(Name)); assert(name); // XXX TODO error handling if (messageHandler_GetIPPacketType(packet) == IPv6_TYPE) { - if (type == MESSAGE_TYPE_INTEREST) { - name->content_name = nameBitvector_CreateFromIn6Addr( - (struct in6_addr *)messageHandler_GetDestination(packet), 128); - } else if (type == MESSAGE_TYPE_DATA) { - name->content_name = nameBitvector_CreateFromIn6Addr( - (struct in6_addr *)messageHandler_GetSource(packet), 128); - } else { - free(name); - return NULL; - } + name->content_name = nameBitvector_CreateFromIn6Addr( (struct in6_addr + *)messageHandler_GetDestination(packet), 128); } else if (messageHandler_GetIPPacketType(packet) == IPv4_TYPE) { - if (type == MESSAGE_TYPE_INTEREST) { - name->content_name = nameBitvector_CreateFromInAddr( - *((uint32_t *)messageHandler_GetDestination(packet)), 32); - } else if (type == MESSAGE_TYPE_DATA) { - name->content_name = nameBitvector_CreateFromInAddr( - *((uint32_t *)messageHandler_GetSource(packet)), 32); - } else { - free(name); - return NULL; - } + name->content_name = nameBitvector_CreateFromInAddr( *((uint32_t + *)messageHandler_GetDestination(packet)), 32); + } else { + printf("Error: unknown message type\n"); + free(name); + return NULL; + } + + name->segment = messageHandler_GetSegment(packet); + name->name_hash = _computeHash(name); + + name->refCountPtr = malloc(sizeof(unsigned)); + assert(name->refCountPtr); // XXX TODO error handling + *name->refCountPtr = 1; + return name; +} + +Name * +name_create_from_data(const uint8_t * packet) +{ + Name *name = malloc(sizeof(Name)); + assert(name); // XXX TODO error handling + + if (messageHandler_GetIPPacketType(packet) == IPv6_TYPE) { + name->content_name = nameBitvector_CreateFromIn6Addr( (struct in6_addr + *)messageHandler_GetSource(packet), 128); + } else if (messageHandler_GetIPPacketType(packet) == IPv4_TYPE) { + name->content_name = nameBitvector_CreateFromInAddr( *((uint32_t + *)messageHandler_GetSource(packet)), 32); } else { printf("Error: unknown message type\n"); free(name); -- cgit 1.2.3-korg