Error compiling riot-os with ccn-lite package

Hello,

I am trying to compile the riot-os in native system to checkout the ccn-lite features, but it is failing with the following message:

ccn-lite-riot.c:120:26: error: ‘CCNL_SUITE_NDNTLV’ undeclared here (not in a function) static int _ccnl_suite = CCNL_SUITE_NDNTLV; ^ In file included from ccn-lite-riot.c:190:0:

ccn-lite-riot.c: In function ‘ccnl_ll_TX’: ccn-lite-riot.c:312:54: error: ‘sockunion {aka union }’ has no member named ‘linklayer’ if (ifc->addr_len == dest->linklayer.sll_halen) { ^ ccn-lite-riot.c:313:61: error: ‘sockunion {aka union }’ has no member named ‘linklayer’ if (memcmp(ifc->hwaddr, dest->linklayer.sll_add ^ ccn-lite-riot.c:313:87: error: ‘sockunion {aka union }’ has no member named ‘linklayer’ if (memcmp(ifc->hwaddr, dest->linklayer.sll_addr, dest->linklayer ^ ccn-lite-riot.c:315:74: error: ‘sockunion {aka union }’ has no member named ‘linklayer’ hdr = gnrc_netif_hdr_build(NULL, dest->linklayer ^ ccn-lite-riot.c:316:68: error: ‘sockunion {aka union }’ has no member named ‘linklayer’ dest->linklayer. ^ ccn-lite-riot.c:317:68: error: ‘sockunion {aka union }’ has no member named ‘linklayer’ dest->linklayer. ^ ccn-lite-riot.c:327:64: error: ‘sockunion {aka union }’ has no member named ‘linklayer’ dest->linklayer.sll_ ^ ccn-lite-riot.c:328:64: error: ‘sockunion {aka union }’ has no member named ‘linklayer’ dest->linklayer.sll_ ^ ccn-lite-riot.c:351:58: error: ‘sockunion {aka union }’ has no member named ‘linklayer’ for (unsigned i = 0; i < dest->linklayer.sll_halen; ^ ccn-lite-riot.c:352:41: error: ‘sockunion {aka union }’ has no member named ‘linklayer’ if (dest->linklayer.sll_addr[i] != UINT8_MAX) { ^ ccn-lite-riot.c: In function ‘_receive’: ccn-lite-riot.c:439:7: error: ‘sockunion {aka union }’ has no member named ‘linklayer’ su.linklayer.sll_halen = nethdr->src_l2addr_len; ^ ccn-lite-riot.c:440:14: error: ‘sockunion {aka union }’ has no member named ‘linklayer’ memcpy(su.linklayer.sll_addr, gnrc_netif_hdr_get_src_addr(nethdr), nethdr-> ^ ccn-lite-riot.c: In function ‘ccnl_send_interest’: ccn-lite-riot.c:616:9: error: implicit declaration of function ‘ccnl_ndntlv_dehead’ [-Werror=implicit-function-declaration] if (ccnl_ndntlv_dehead(&data, &len, (int*) &typ, &int_len) || (int) int_len ^ ccn-lite-riot.c:620:11: error: implicit declaration of function ‘ccnl_ndntlv_bytes2pkt’ [-Werror=implicit-function-declaration] pkt = ccnl_ndntlv_bytes2pkt(NDN_TLV_Interest, start, &data, &len); ^ ccn-lite-riot.c:620:9: error: assignment makes pointer from integer without a cast [-Werror=int-conversion] pkt = ccnl_ndntlv_bytes2pkt(NDN_TLV_Interest, start, &data, &len);

My makefile is the basic Makefile of hello-world with following line added USEPKG += ccn-lite

Any suggestions on what am I missing?

Hi Nazmul,

I think this might be not well documented indeed.

You need to set some configuration options for CCN-lite via the Makefile. The folloing would work:

# tell CCN-lite to run on top of link-layer CFLAGS += -DUSE_LINKLAYER # mandatory to include the propoer headers CFLAGS += -DCCNL_UAPI_H_ # tell CCN-lite which TLV to use (only NDNTLV is supported so far) CFLAGS += -DUSE_SUITE_NDNTLV # again mandatory for now CFLAGS += -DNEEDS_PREFIX_MATCHING CFLAGS += -DNEEDS_PACKET_CRAFTING

Finally, I discovered that there is a unmodelled dependency from CCN-lite's shell commands in RIOT to the CCN-lite utils. Hence, you will need to add

USEMODULE += ccn-lite-utils

to your Makefile, too.

Cheers, Oleg

P.S. I would recommend to start with the ccn-lite-relay example instead as a starting point.

Hi Oleg,

Thanks for your suggestions.

It compiles correctly if I don’t include USEMODULE += ccn-lite-utils

as it builds that automatically.

Including that line causes following error make[1]: *** /home/fadedreamz/riotos/RIOT/pkg/ccn-lite-utils: No such file or directory. Stop.

I will use the ccn-lite-relay example as the starting point.

Thank you again.