16 #ifndef __HICN_PARSER_H__
17 #define __HICN_PARSER_H__
19 #include <vlib/vlib.h>
35 HICN_PKT_TYPE_INTEREST = 0,
36 HICN_PKT_TYPE_CONTENT = 1,
53 return HICN_ERROR_PARSER_PKT_INVAL;
56 u8 *ip_pkt = vlib_buffer_get_current (pkt);
57 *isv6 = hicn_is_v6 (pkt_hdr);
58 u8 ip_proto = (*isv6) * IPPROTO_IPV6;
59 u8 next_proto_offset = 6 + (1 - *isv6) * 3;
64 .l2 = ip_pkt[next_proto_offset],
66 hicn_get_buffer (pkt)->type = type;
69 *namelen = (1 - (*isv6)) * HICN_V4_NAME_LEN + (*isv6) * HICN_V6_NAME_LEN;
71 return HICN_ERROR_NONE;
88 return HICN_ERROR_PARSER_PKT_INVAL;
92 u8 *ip_pkt = vlib_buffer_get_current (pkt);
93 *isv6 = hicn_is_v6 (pkt_hdr);
94 u8 ip_proto = (*isv6) * IPPROTO_IPV6;
99 u8 next_proto_offset = 6 + (1 - *isv6) * 3;
102 .l2 = ip_pkt[next_proto_offset],
104 hicn_get_buffer (pkt)->type = type;
106 *namelen = (1 - (*isv6)) * HICN_V4_NAME_LEN + (*isv6) * HICN_V6_NAME_LEN;
108 return HICN_ERROR_NONE;