blob: 8fbfaa2fca05234fdc0f446208ac9beac2075d7a [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 "common.h"
#include "name.h"
#include "publisher-public-key-digest.h"
#include "forwarding-flags.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 {
uint8_t *action; /**< pointer to pre-allocated buffer. 0 for none. */
size_t actionLength; /**< length of action. 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)
{
self->action = 0;
self->actionLength = 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