blob: 48bbf5ea23f81b2cf464e13ea5d889103c10fec0 [file] [log] [blame]
/**
* 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