blob: a57429d4ef0be2a835cde95580173fbd147aca0e [file] [log] [blame]
Jeff Thompson990599b2013-08-27 15:14:25 -07001/**
Jeff Thompson7687dc02013-09-13 11:54:07 -07002 * Copyright (C) 2013 Regents of the University of California.
3 * @author: Jeff Thompson <jefft0@remap.ucla.edu>
Jeff Thompson990599b2013-08-27 15:14:25 -07004 * See COPYING for copyright and distribution information.
5 */
6
7#ifndef NDN_FORWARDING_ENTRY_H
8#define NDN_FORWARDING_ENTRY_H
9
Jeff Thompson10ad12a2013-09-24 16:19:11 -070010#include "common.h"
Jeff Thompson990599b2013-08-27 15:14:25 -070011#include "name.h"
12#include "publisher-public-key-digest.h"
13
14#ifdef __cplusplus
15extern "C" {
16#endif
17
18/**
19 * An ndn_ForwardingEntry holds fields for a ForwardingEntry which is used to register a prefix with a hub.
20 */
21struct ndn_ForwardingEntry {
Jeff Thompson10ad12a2013-09-24 16:19:11 -070022 uint8_t *action; /**< pointer to pre-allocated buffer. 0 for none. */
Jeff Thompson97223af2013-09-24 17:01:27 -070023 size_t actionLength; /**< length of action. 0 for none. */
Jeff Thompson990599b2013-08-27 15:14:25 -070024 struct ndn_Name prefix;
25 struct ndn_PublisherPublicKeyDigest publisherPublicKeyDigest;
26 int faceId; /**< -1 for none. */
27 int forwardingFlags; /**< -1 for none. */
28 int freshnessSeconds; /**< -1 for none. */
29};
30
31/**
32 * Initialize an ndn_ForwardingEntry struct with the pre-allocated prefixNameComponents,
33 * and defaults for all the values.
34 * @param self pointer to the ndn_Interest struct
35 * @param prefixNameComponents the pre-allocated array of ndn_NameComponent
36 * @param maxPrefixNameComponents the number of elements in the allocated prefixNameComponents array
37 */
Jeff Thompsond1427fb2013-08-29 17:20:32 -070038static inline void ndn_ForwardingEntry_initialize
Jeff Thompson97223af2013-09-24 17:01:27 -070039 (struct ndn_ForwardingEntry *self, struct ndn_NameComponent *prefixNameComponents, size_t maxPrefixNameComponents)
Jeff Thompson990599b2013-08-27 15:14:25 -070040{
41 self->action = 0;
42 self->actionLength = 0;
Jeff Thompsond1427fb2013-08-29 17:20:32 -070043 ndn_Name_initialize(&self->prefix, prefixNameComponents, maxPrefixNameComponents);
44 ndn_PublisherPublicKeyDigest_initialize(&self->publisherPublicKeyDigest);
Jeff Thompson990599b2013-08-27 15:14:25 -070045 self->faceId = -1;
46 self->forwardingFlags = -1;
47 self->freshnessSeconds = -1;
48}
49
50#ifdef __cplusplus
51}
52#endif
53
54#endif