| /** |
| * Copyright (C) 2013 Regents of the University of California. |
| * @author: Jeff Thompson <jefft0@remap.ucla.edu> |
| * See COPYING for copyright and distribution information. |
| */ |
| |
| #ifndef NDN_FORWARDING_ENTRY_H |
| #define NDN_FORWARDING_ENTRY_H |
| |
| #include <ndn-cpp/c/common.h> |
| #include <ndn-cpp/c/forwarding-flags.h> |
| #include "name.h" |
| #include "publisher-public-key-digest.h" |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| typedef enum { |
| ndn_ForwardingEntryFlags_ACTIVE = 1, |
| ndn_ForwardingEntryFlags_CHILD_INHERIT = 2, |
| ndn_ForwardingEntryFlags_ADVERTISE = 4, |
| ndn_ForwardingEntryFlags_LAST = 8, |
| ndn_ForwardingEntryFlags_CAPTURE = 16, |
| ndn_ForwardingEntryFlags_LOCAL = 32, |
| ndn_ForwardingEntryFlags_TAP = 64, |
| ndn_ForwardingEntryFlags_CAPTURE_OK = 128 |
| } ndn_ForwardingEntryFlags; |
| |
| /** |
| * An ndn_ForwardingEntry holds fields for a ForwardingEntry which is used to register a prefix with a hub. |
| */ |
| struct ndn_ForwardingEntry { |
| struct ndn_Blob action; /**< A Blob whose value is a pointer to a pre-allocated buffer. 0 for none. */ |
| struct ndn_Name prefix; |
| struct ndn_PublisherPublicKeyDigest publisherPublicKeyDigest; |
| int faceId; /**< -1 for none. */ |
| struct ndn_ForwardingFlags forwardingFlags; |
| int freshnessSeconds; /**< -1 for none. */ |
| }; |
| |
| /** |
| * Initialize an ndn_ForwardingEntry struct with the pre-allocated prefixNameComponents, |
| * and defaults for all the values. |
| * @param self pointer to the ndn_Interest struct |
| * @param prefixNameComponents the pre-allocated array of ndn_NameComponent |
| * @param maxPrefixNameComponents the number of elements in the allocated prefixNameComponents array |
| */ |
| static inline void ndn_ForwardingEntry_initialize |
| (struct ndn_ForwardingEntry *self, struct ndn_NameComponent *prefixNameComponents, size_t maxPrefixNameComponents) |
| { |
| ndn_Blob_initialize(&self->action, 0, 0); |
| ndn_Name_initialize(&self->prefix, prefixNameComponents, maxPrefixNameComponents); |
| ndn_PublisherPublicKeyDigest_initialize(&self->publisherPublicKeyDigest); |
| self->faceId = -1; |
| ndn_ForwardingFlags_initialize(&self->forwardingFlags); |
| self->freshnessSeconds = -1; |
| } |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif |