61 #ifndef _FB_PRIVATE_H_
62 #define _FB_PRIVATE_H_
84 #define IPFIX_ENTERPRISE_BIT 0x8000
87 #define IPFIX_REVERSE_PEN 29305
91 #define FB_MSGLEN_MAX 65535
95 typedef struct sp_groupname_st
97 char name[MAX_GROUP_NAME];
100 #define FB_SPREAD_NUM_GROUPS 16
101 #define FB_SPREAD_MTU 8192
103 typedef struct fbSpreadSpec_st {
111 sp_groupname_t *groups;
115 sp_groupname_t *groups_to_send;
116 int num_groups_to_send;
120 char privgroup[MAX_GROUP_NAME + 2];
122 pthread_mutex_t write_lock;
124 pthread_t recv_thread;
128 char recv_privgroup[MAX_GROUP_NAME + 2];
138 sp_groupname_t *recv_groups;
161 struct sockaddr_in ip4;
162 struct sockaddr_in6 ip6;
273 void fBufSetExportGroups(
370 uint16_t len_override,
513 void fbSessionSetGroupParams(
515 sp_groupname_t *groups,
523 void fbSessionSetPrivateGroup(
532 void fbSessionSetGroup(
540 unsigned int fbSessionGetGroupOffset(
548 unsigned int fbSessionGetGroup(
552 void fbSessionClearIntTmplTableFlag(
555 void fbSessionClearExtTmplTableFlag(
558 int fbSessionIntTmplTableFlagIsSet(
561 int fbSessionExtTmplTableFlagIsSet(
617 fbSpreadSpec_t *fbConnSpreadCopy(
618 fbSpreadParams_t *spec);
627 void fbConnSpreadFree(
628 fbSpreadSpec_t *spec);
638 const char * fbConnSpreadError(
651 void fbExporterSetGroupsToSend(
666 gboolean fbExporterCheckGroups(
734 struct sockaddr *peer,
752 struct sockaddr *peer,
840 gboolean fbCollectorTestGroupMembership(
gboolean reject
reject flag
Definition: private.h:175
gboolean fbCollectMessage(fbCollector_t *collector, uint8_t *msgbase, size_t *msglen, GError **err)
fbCollectMessage
void fbTemplateRelease(fbTemplate_t *tmpl)
fbTemplateRelease
fbSession_t * fbListenerSetPeerSession(fbListener_t *listener, fbSession_t *session)
Set the session on the fbuf and listener.
void fbCollectorInterruptSocket(fbCollector_t *collector)
Interrupt the socket for a given collector to stop it from reading more data.
gboolean fbInfoElementCopyToTemplateByName(fbInfoModel_t *model, const char *name, uint16_t len_override, fbInfoElement_t *tmpl_ie)
fbInfoElementCopyToTemplateByName
void * ctx
application context.
Definition: private.h:157
struct fbUDPConnSpec_st * prev
doubly linked to timeout faster
Definition: private.h:169
const fbInfoElement_t * fbInfoModelGetElement(fbInfoModel_t *model, fbInfoElement_t *ex_ie)
fbInfoModelGetElement
size_t peerlen
size of peer
Definition: private.h:165
struct fbCollector_st fbCollector_t
IPFIX Collecting Process endpoint.
Definition: public.h:1634
struct fbExporter_st fbExporter_t
IPFIX Exporting Process endpoint.
Definition: public.h:1624
int fbCollectorGetFD(fbCollector_t *collector)
fbCollectorGetFD
struct fbSession_st fbSession_t
An IPFIX Transport Session state container.
Definition: public.h:1526
fbCollector_t * fbCollectorAllocSocket(fbListener_t *listener, void *ctx, int fd, struct sockaddr *peer, size_t peerlen)
fbCollectorAllocSocket
struct fbListener_st fbListener_t
IPFIX Collecting Process session listener.
Definition: public.h:1643
uint32_t fbInfoElementHash(fbInfoElement_t *ie)
fbInfoElementHash
gboolean active
TRUE if this template has been activated (is no longer mutable)
Definition: private.h:223
gboolean fbListenerCallAppInit(fbListener_t *listener, fbUDPConnSpec_t *spec, GError **err)
call appinit from UDP
time_t last_seen
last seen time
Definition: private.h:171
uint16_t ie_count
Count of information elements in template.
Definition: private.h:190
fbInfoModel_t * model
Information model (for looking up information elements by spec)
Definition: private.h:186
gboolean fBufAppendTemplate(fBuf_t *fbuf, uint16_t tmpl_id, fbTemplate_t *tmpl, gboolean revoked, GError **err)
fBufAppendTemplate
fbNewTemplateCallback_fn fbSessionTemplateCallback(fbSession_t *session)
Returns the callback function for a given session.
An UDP Connection specifier.
Definition: private.h:153
void fbCollectorRemoveListenerLastBuf(fBuf_t *fbuf, fbCollector_t *collector)
fbCollectorRemoveListenerLastBuf
gboolean fbConnSpecInitTLS(fbConnSpec_t *spec, gboolean passive, GError **err)
fbConnSpecInitTLS
void(* fbNewTemplateCallback_fn)(fbSession_t *session, uint16_t tid, fbTemplate_t *tmpl)
The callback function to be called when the session receives a new external template from the connect...
Definition: public.h:1705
uint16_t ie_internal_len
Total length required to store this template in a data structure.
Definition: private.h:208
struct fbUDPConnSpec_st * next
link to next one in list
Definition: private.h:167
Fixbuf IPFIX protocol library public interface.
void fbTemplateRetain(fbTemplate_t *tmpl)
fbTemplateRetain
void fbListenerRemove(fbListener_t *listener, int fd)
fbListenerRemove
void(* fbTemplateCtxCallback2_fn)(fbSession_t *session, uint16_t tid, fbTemplate_t *tmpl, void *app_ctx, void **tmpl_ctx, fbTemplateCtxFree2_fn *fn)
A callback function that will be called when the session receives a new external template.
Definition: public.h:1791
gboolean fbConnSpecLookupAI(fbConnSpec_t *spec, gboolean passive, GError **err)
fbConnSpecLookupAI
gboolean fbExportMessage(fbExporter_t *exporter, uint8_t *msgbase, size_t msglen, GError **err)
fbExportMessage
int ref_count
Reference count.
Definition: private.h:188
uint32_t obdomain
with peer address this is the key
Definition: private.h:173
void fbTemplateDebug(const char *label, uint16_t tid, fbTemplate_t *tmpl)
fbTemplateDebug
void fbCollectorFree(fbCollector_t *collector)
fbCollectorFree
fbSession_t * fbSessionClone(fbSession_t *base)
fbSessionClone
uint16_t tmpl_len
Total length of the template record or options template record defining this template.
Definition: private.h:213
struct fbInfoModel_st fbInfoModel_t
An IPFIX information model.
Definition: public.h:1060
gboolean fbCollectorHasTranslator(fbCollector_t *collector)
fbCollectorHasTranslator
void fbListenerAppFree(fbListener_t *listener, void *ctx)
fbListenerAppFree
uint16_t ie_len
Total length of information elements in records described by this template.
Definition: private.h:202
void fbConnSpecFree(fbConnSpec_t *spec)
fbConnSpecFree
uint16_t * off_cache
Field offset cache.
Definition: private.h:221
void fBufRewind(fBuf_t *fbuf)
fBufRewind
void * app_ctx
The application's Context pointer for the ctx_free function.
Definition: private.h:236
void fbListenerRemoveLastBuf(fBuf_t *fbuf, fbListener_t *listener)
fbListenerRemoveLastBuf
GHashTable * indices
Map of information element to index in ie_ary.
Definition: private.h:219
fbTemplateCtxFree2_fn ctx_free
Callback to free the ctx pointer when template is freed.
Definition: private.h:232
void fbSessionSetTemplateBuffer(fbSession_t *session, fBuf_t *fbuf)
fbSessionSetTemplateBuffer
void * fbSessionTemplateCtxCallbackAppCtx(fbSession_t *session)
Return the ctx callback function's application context for a given session.
gboolean is_varlen
Set to TRUE if this template contains any variable length IEs.
Definition: private.h:215
void fbExporterFree(fbExporter_t *exporter)
fbExporterFree
gboolean fbCollectMessageBuffer(uint8_t *hdr, size_t b_len, size_t *m_len, GError **err)
fbCollectMessageBuffer
gboolean fbInfoElementEqual(const fbInfoElement_t *a, const fbInfoElement_t *b)
fbInfoElementEqual
fbTemplateCtxCallback2_fn fbSessionTemplateCtxCallback(fbSession_t *session)
Return the ctx callback function for a given session.
void fbCollectorSetFD(fbCollector_t *collector, int fd)
fbCollectorSetFD
gboolean fbInfoElementCopyToTemplate(fbInfoModel_t *model, fbInfoElement_t *ex_ie, fbInfoElement_t *tmpl_ie)
fbInfoElementCopyToTemplate
void * tmpl_ctx
Template context.
Definition: private.h:228
uint32_t fbSessionGetSequence(fbSession_t *session)
fbSessionGetSequence
uint16_t fbExporterGetMTU(fbExporter_t *exporter)
fbExporterGetMTU
An IPFIX template or options template structure.
Definition: private.h:184
fbConnSpec_t * fbConnSpecCopy(fbConnSpec_t *spec)
fbConnSpecCopy
void fbInfoElementDebug(gboolean tmpl, fbInfoElement_t *ie)
fbInfoElementDebug
union fbUDPConnSpec_st::@0 peer
key to this conn spec
fbInfoElement_t ** ie_ary
Ordered array of pointers to information elements in this template.
Definition: private.h:217
fbCollector_t * fbCollectorAllocTLS(fbListener_t *listener, void *ctx, int fd, struct sockaddr *peer, size_t peerlen, GError **err)
fbCollectorAllocTLS
Connection specifier.
Definition: public.h:1562
void fbSessionSetCollector(fbSession_t *session, fbCollector_t *collector)
fbSessionSetCollector
struct fBuf_st fBuf_t
An IPFIX message buffer.
Definition: public.h:1034
void fbTemplateFree(fbTemplate_t *tmpl)
fbTemplateFree
const fbInfoElement_t * fbInfoModelAddAlienElement(fbInfoModel_t *model, fbInfoElement_t *ex_ie)
fbInfoModelAddAlienElement
A single IPFIX Information Element definition.
Definition: public.h:1388
void(* fbTemplateCtxFree2_fn)(void *tmpl_ctx, void *app_ctx)
A callback function that is called when a template is freed.
Definition: public.h:1729
uint16_t scope_count
Count of scope information elements in template.
Definition: private.h:195
fbConnSpec_t * fbListenerGetConnSpec(fbListener_t *listener)
fbListenerGetConnSpec
void fBufSetSession(fBuf_t *fbuf, fbSession_t *session)
fBufSetSession
struct fbUDPConnSpec_st fbUDPConnSpec_t
An UDP Connection specifier.
void fbSessionSetSequence(fbSession_t *session, uint32_t sequence)
fbSessionSetSequence
fbSession_t * session
pointer to the session for this peer address
Definition: private.h:155
void fBufRemoveTemplateTcplan(fBuf_t *fbuf, fbTemplate_t *tmpl)
fBufRemoveTemplateTcplan