Hybrid ICN (hICN)  v19.04-42-gcb549ca
libhicn

Introduction

libhicn provides a support library coded in C designed to help developers embed Hybrid ICN (hICN) functionalities in their applications (eg. forwarder, socket API, etc.). Its purpose is to follow the hICN specification for which it provides a reference implementation, abstracting the user from all internal mechanisms, and offering an API independent of the packet format (eg. IPv4 or IPv6). The library is designed to be portable across both desktop and mobile platforms, and we currently aim at supporting Linux, Android, OSX and iOS, by writing the necessary adapters to realize hICN functionality in userspace according to the available APIs and permissions that each system offers.

The library consists in several layers:

A commandline interface (hicnc) is also provided that uses the library and can for instance be used as a test traffic generator. This interface can be run as either a consumer, a producer, or a simple forwarder.

Folder content

CMakeLists.txt CMkake global build file doc Package documentation README.md This file src base.h Base definitions for hICN implementation CMakeLists.txt CMake library build file common.{h,c} Harmonization layer across supported platforms compat.{h,c} Compatibility layer for former API error.{h,c} Error management files header.h hICN header definitions hicn.h Master include file mapme.{h,c} MAP-Me : anchorless producer mobility mechanisms name.{h,c} hICN naming conventions and name processing + IP helpers ops.{h,c} Protocol-independent hICN operations protocol/* Protocol headers + protocol-dependent implementations protocol.h Common file for protocols

Using libhicn

Platforms

libhicn has been tested in:

Other platforms and architectures may work.

Dependencies

Build dependencies:

Basic dependencies: None

Installation

You can either use released packages, or compile libhicn from sources.

Release mode

mkdir build cd build cmake .. make sudo make install

Debug mode

mkdir debug cd debug cmake .. -DCMAKE_BUILD_TYPE=Debug make sudo make install

License

This software is distributed under the following license:

1 Copyright (c) 2017-2019 Cisco and/or its affiliates.
2 Licensed under the Apache License, Version 2.0 (the "License");
3 you may not use this file except in compliance with the License.
4 You may obtain a copy of the License at:
5 
6  http://www.apache.org/licenses/LICENSE-2.0
7 
8 Unless required by applicable law or agreed to in writing, software
9 distributed under the License is distributed on an "AS IS" BASIS,
10 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 See the License for the specific language governing permissions and
12 limitations under the License.