CERT NetSA Security Suite
Monitoring for Large-Scale Networks

# fixbuf

Documentation
Typedefs | Macros | Functions | Data Structures
private.h File Reference

fixbuf IPFIX protocol library private interface. More...

`#include <fixbuf/public.h>`
`#include <sp.h>`
`#include <pthread.h>`

Go to the source code of this file.

## Typedefs

typedef struct sp_groupname_st | sp_groupname_t
| sp_groupname_t
typedef struct fbSpreadSpec_st | fbSpreadSpec_t
| fbSpreadSpec_t
typedef struct fbUDPConnSpec_st | fbUDPConnSpec_t
| An UDP Connection specifier.
typedef struct fbTemplateOptRec_st | fbTemplateOptRec_t
| Template metadata options record structure.

## Macros

#define | IPFIX_ENTERPRISE_BIT 0x8000
| define the bit in ID's that marks the Enterprise ID's
#define | FB_MSGLEN_MAX 65535
| definition of the max-size of an fbuf_t buffer, or the default/only size
#define | FB_SSL_ERR_BUFSIZ 512
| size of the buffer for OpenSSL error messages
#define | FB_SPREAD_NUM_GROUPS 16
| maximum number of groups supported
#define | FB_SPREAD_MTU 8192
| maximum size of expected message

## Functions

void | fBufRewind (fBuf_t *fbuf)
| fBufRewind
gboolean | fBufAppendTemplate (fBuf_t *fbuf, uint16_t tmpl_id, fbTemplate_t *tmpl, gboolean revoked, GError **err)
| fBufAppendTemplate
void | fBufSetExportGroups (fBuf_t *fbuf, char **groups, int num_groups, GError **err)
| fBufSetExportGroups
void | fBufRemoveTemplateTcplan (fBuf_t *fbuf, fbTemplate_t *tmpl)
| fBufRemoveTemplateTcplan
void | fBufSetSession (fBuf_t *fbuf, fbSession_t *session)
| fBufSetSession
uint16_t | fBufGetExportTemplate (fBuf_t *fbuf)
| fBufGetExportTemplate
uint16_t | fBufGetInternalTemplate (fBuf_t *fbuf)
| fBufGetInternalTemplate
uint32_t | fbInfoElementHash (fbInfoElement_t *ie)
| fbInfoElementHash
gboolean | fbInfoElementEqual (const fbInfoElement_t *a, const fbInfoElement_t *b)
| fbInfoElementEqual
void | fbInfoElementDebug (gboolean tmpl, fbInfoElement_t *ie)
| fbInfoElementDebug
const fbInfoElement_t * | fbInfoModelGetElement (fbInfoModel_t *model, fbInfoElement_t *ex_ie)
| fbInfoModelGetElement
gboolean | fbInfoElementCopyToTemplate (fbInfoModel_t *model, fbInfoElement_t *ex_ie, fbInfoElement_t *tmpl_ie, GError **err)
| fbInfoElementCopyToTemplate
gboolean | fbInfoElementCopyToTemplateByName (fbInfoModel_t *model, const char *name, uint16_t len_override, fbInfoElement_t *tmpl_ie, GError **err)
| fbInfoElementCopyToTemplateByName
const fbInfoElement_t * | fbInfoModelAddAlienElement (fbInfoModel_t *model, fbInfoElement_t *ex_ie)
| fbInfoModelAddAlienElement
fbTemplate_t * | fbInfoElementAllocTypeTemplate2 (fbInfoModel_t *model, gboolean internal, GError **err)
| fbInfoElementAllocTypeTemplate2
void | fbTemplateRetain (fbTemplate_t *tmpl)
| fbTemplateRetain
void | fbTemplateRelease (fbTemplate_t *tmpl)
| fbTemplateRelease
void | fbTemplateFree (fbTemplate_t *tmpl)
| fbTemplateFree
void | fbTemplateDebug (const char *label, uint16_t tid, fbTemplate_t *tmpl)
| fbTemplateDebug
fbTemplate_t * | fbTemplateAllocTemplateMetadataTmpl (fbInfoModel_t *model, gboolean internal, GError **err)
| Allocates a new Template to describe a record that holds Template Metadata.
void | fbTemplateAddMetadataRecord (fbTemplate_t *tmpl, uint16_t tid, const char *name, const char *description)
| Sets the metadata_rec member of tmpl to a newly allocated fbTemplateOptRec_t, and sets its template ID, name, and description to the given parameters.
fbNewTemplateCallback_fn | fbSessionNewTemplateCallback (fbSession_t *session)
| Returns the callback function for a given session.
void * | fbSessionNewTemplateCallbackAppCtx (fbSession_t *session)
| Return the callback function's application context for a given session.
fbSession_t * | fbSessionClone (fbSession_t *base)
| fbSessionClone
uint32_t | fbSessionGetSequence (fbSession_t *session)
| fbSessionGetSequence
void | fbSessionSetSequence (fbSession_t *session, uint32_t sequence)
| fbSessionSetSequence
void | fbSessionSetTemplateBuffer (fbSession_t *session, fBuf_t *fbuf)
| fbSessionSetTemplateBuffer
void | fbSessionSetCollector (fbSession_t *session, fbCollector_t *collector)
| fbSessionSetCollector
void | fbSessionSetGroupParams (fbSession_t *session, sp_groupname_t *groups, unsigned int num_groups)
| fbSessionSetGroupParams
void | fbSessionSetPrivateGroup (fbSession_t *session, char *group, char *privgroup)
| fbSessionSetPrivateGroup
void | fbSessionSetGroup (fbSession_t *session, char *group)
| fbSessionSetGroup
unsigned int | fbSessionGetGroupOffset (fbSession_t *session, char *group)
| fbSessionGetGroupOffset
unsigned int | fbSessionGetGroup (fbSession_t *session)
| fbSessionGetGroup
void | fbSessionClearIntTmplTableFlag (fbSession_t *session)
| fbSessionClearIntTmplTableFlag
void | fbSessionClearExtTmplTableFlag (fbSession_t *session)
| fbSessionClearExtTmplTableFlag
int | fbSessionIntTmplTableFlagIsSet (fbSession_t *session)
| fbSessionIntTmplTableFlagIsSet
int | fbSessionExtTmplTableFlagIsSet (fbSession_t *session)
| fbSessionExtTmplTableFlagIsSet
gboolean | fbConnSpecLookupAI (fbConnSpec_t *spec, gboolean passive, GError **err)
| fbConnSpecLookupAI
gboolean | fbConnSpecInitTLS (fbConnSpec_t *spec, gboolean passive, GError **err)
| fbConnSpecInitTLS
fbConnSpec_t * | fbConnSpecCopy (fbConnSpec_t *spec)
| fbConnSpecCopy
void | fbConnSpecFree (fbConnSpec_t *spec)
| fbConnSpecFree
fbSpreadSpec_t * | fbConnSpreadCopy (fbSpreadParams_t *spec)
| fbConnSpreadCopy
void | fbConnSpreadFree (fbSpreadSpec_t *spec)
| fbConnSpreadFree
const char * | fbConnSpreadError (int err)
| fbConnSpreadError
void | fbExporterSetGroupsToSend (fbExporter_t *exporter, char **groups, int num_groups)
| fbExporterSetGroupToSend
gboolean | fbExporterCheckGroups (fbExporter_t *exporter, char **groups, int num_groups)
| fbExporterCheckGroups
uint16_t | fbExporterGetMTU (fbExporter_t *exporter)
| fbExporterGetMTU
gboolean | fbExportMessage (fbExporter_t *exporter, uint8_t *msgbase, size_t msglen, GError **err)
| fbExportMessage
void | fbExporterFree (fbExporter_t *exporter)
| fbExporterFree
void | fbCollectorRemoveListenerLastBuf (fBuf_t *fbuf, fbCollector_t *collector)
| fbCollectorRemoveListenerLastBuf
fbCollector_t * | fbCollectorAllocSocket (fbListener_t *listener, void *ctx, int fd, struct sockaddr *peer, size_t peerlen, GError **err)
| fbCollectorAllocSocket
fbCollector_t * | fbCollectorAllocTLS (fbListener_t *listener, void *ctx, int fd, struct sockaddr *peer, size_t peerlen, GError **err)
| fbCollectorAllocTLS
gboolean | fbCollectMessage (fbCollector_t *collector, uint8_t *msgbase, size_t *msglen, GError **err)
| fbCollectMessage
int | fbCollectorGetFD (fbCollector_t *collector)
| fbCollectorGetFD
void | fbCollectorSetFD (fbCollector_t *collector, int fd)
| fbCollectorSetFD
void | fbCollectorFree (fbCollector_t *collector)
| fbCollectorFree
gboolean | fbCollectorHasTranslator (fbCollector_t *collector)
| fbCollectorHasTranslator
gboolean | fbCollectMessageBuffer (uint8_t *hdr, size_t b_len, size_t *m_len, GError **err)
| fbCollectMessageBuffer
gboolean | fbCollectorTestGroupMembership (fbCollector_t *collector, int group_offset)
| fbCollectorTestGroupMembership
void | fbListenerAppFree (fbListener_t *listener, void *ctx)
| fbListenerAppFree
void | fbListenerRemoveLastBuf (fBuf_t *fbuf, fbListener_t *listener)
| fbListenerRemoveLastBuf
void | fbListenerRemove (fbListener_t *listener, int fd)
| fbListenerRemove
fbConnSpec_t * | fbListenerGetConnSpec (fbListener_t *listener)
| fbListenerGetConnSpec
void | fbCollectorInterruptSocket (fbCollector_t *collector)
| Interrupt the socket for a given collector to stop it from reading more data.
gboolean | fbListenerCallAppInit (fbListener_t *listener, fbUDPConnSpec_t *spec, GError **err)
| call appinit from UDP
fbSession_t * | fbListenerSetPeerSession (fbListener_t *listener, fbSession_t *session)
| Set the session on the fbuf and listener.

## Data Structures

struct | sp_groupname_st
| sp_groupname_t More...
struct | fbSpreadSpec_st
| fbSpreadSpec_t More...
struct | fbUDPConnSpec_st
| An UDP Connection specifier. More...
struct | fbTemplateOptRec_st
| Template metadata options record structure. More...
struct | fbTemplate_st
| An IPFIX template or options template structure. More...
union | fbUDPConnSpec_st.peer
| key to this conn spec More...

## Detailed Description

fixbuf IPFIX protocol library private interface.

These calls and structures are intended for the use of libfixbuf modules, and as such are not documented or guaranteed to remain stable in any way. Applications using these calls and structures may have to be modified to track changes to this interface across minor version releases of fixbuf.

## Typedef Documentation

## ◆ fbUDPConnSpec_t

typedef struct fbUDPConnSpec_st fbUDPConnSpec_t

An UDP Connection specifier.

These are managed by the collector. The collector creates one fbUDPConnSpec_t per "UDP session." A UDP session is defined by a unique IP and observation domain."

## Function Documentation

## ◆ fBufRewind()

void fBufRewind | ( | fBuf_t * | fbuf | ) |

fBufRewind

Parameters

  fbuf |

## ◆ fBufAppendTemplate()

gboolean fBufAppendTemplate | ( | fBuf_t * | fbuf,
|  | uint16_t | tmpl_id,
|  | fbTemplate_t * | tmpl,
|  | gboolean | revoked,
|  | GError ** | err )

fBufAppendTemplate

Parameters

  fbuf |
  tmpl_id |
  tmpl |
  revoked |
  err |

Returns
  TRUE on success, FALSE on error

## ◆ fbInfoElementHash()

uint32_t fbInfoElementHash | ( | fbInfoElement_t * | ie | ) |

fbInfoElementHash

Parameters

  ie |

## ◆ fbInfoElementEqual()

gboolean fbInfoElementEqual | ( | const fbInfoElement_t * | a,
|  | const fbInfoElement_t * | b )

fbInfoElementEqual

Parameters

  a |
  b |

## ◆ fbInfoElementDebug()

void fbInfoElementDebug | ( | gboolean | tmpl,
|  | fbInfoElement_t * | ie )

fbInfoElementDebug

Parameters

  tmpl |
  ie |

## ◆ fbInfoModelGetElement()

const fbInfoElement_t * fbInfoModelGetElement | ( | fbInfoModel_t * | model,
|  | fbInfoElement_t * | ex_ie )

fbInfoModelGetElement

Parameters

  model |
  ex_ie |

## ◆ fbInfoElementCopyToTemplate()

gboolean fbInfoElementCopyToTemplate | ( | fbInfoModel_t * | model,
|  | fbInfoElement_t * | ex_ie,
|  | fbInfoElement_t * | tmpl_ie,
|  | GError ** | err )

fbInfoElementCopyToTemplate

Parameters

  model |
  ex_ie |
  tmpl_ie |
  err |

## ◆ fbInfoElementCopyToTemplateByName()

gboolean fbInfoElementCopyToTemplateByName | ( | fbInfoModel_t * | model,
|  | const char * | name,
|  | uint16_t | len_override,
|  | fbInfoElement_t * | tmpl_ie,
|  | GError ** | err )

fbInfoElementCopyToTemplateByName

Parameters

  model |
  name |
  len_override |
  tmpl_ie |
  err |

## ◆ fbInfoModelAddAlienElement()

const fbInfoElement_t * fbInfoModelAddAlienElement | ( | fbInfoModel_t * | model,
|  | fbInfoElement_t * | ex_ie )

fbInfoModelAddAlienElement

Parameters

  model |
  ex_ie |

Returns
  info_elemnt

## ◆ fbInfoElementAllocTypeTemplate2()

fbTemplate_t * fbInfoElementAllocTypeTemplate2 | ( | fbInfoModel_t * | model,
|  | gboolean | internal,
|  | GError ** | err )

fbInfoElementAllocTypeTemplate2

Parameters

  model |
  internal |
  err |

Returns
  tmpl

## ◆ fbTemplateRetain()

void fbTemplateRetain | ( | fbTemplate_t * | tmpl | ) |

fbTemplateRetain

Parameters

  tmpl |

## ◆ fbTemplateRelease()

void fbTemplateRelease | ( | fbTemplate_t * | tmpl | ) |

fbTemplateRelease

Parameters

  tmpl |

## ◆ fbTemplateFree()

void fbTemplateFree | ( | fbTemplate_t * | tmpl | ) |

fbTemplateFree

Parameters

  tmpl |

## ◆ fbTemplateDebug()

void fbTemplateDebug | ( | const char * | label,
|  | uint16_t | tid,
|  | fbTemplate_t * | tmpl )

fbTemplateDebug

Parameters

  label |
  tid |
  tmpl |

## ◆ fbTemplateAllocTemplateMetadataTmpl()

fbTemplate_t * fbTemplateAllocTemplateMetadataTmpl | ( | fbInfoModel_t * | model,
|  | gboolean | internal,
|  | GError ** | err )

Allocates a new Template to describe a record that holds Template Metadata.

This is, the template_metadata_spec.

When internal is TRUE the padding is included; otherwise it is not.

Parameters

  model |
  internal |
  err |

Returns
  The new template or NULL.

## ◆ fbTemplateAddMetadataRecord()

void fbTemplateAddMetadataRecord | ( | fbTemplate_t * | tmpl,
|  | uint16_t | tid,
|  | const char * | name,
|  | const char * | description )

Sets the metadata_rec member of tmpl to a newly allocated fbTemplateOptRec_t, and sets its template ID, name, and description to the given parameters.

Frees any metadata_rec that already existed on the template.

Parameters

  tmpl |
  tid |
  name | Should not be NULL
  description | May be NULL

## ◆ fbSessionNewTemplateCallback()

fbNewTemplateCallback_fn fbSessionNewTemplateCallback | ( | fbSession_t * | session | ) |

Returns the callback function for a given session.

Parameters

  session |

Returns
  the callback function variable in the session

## ◆ fbSessionNewTemplateCallbackAppCtx()

void * fbSessionNewTemplateCallbackAppCtx | ( | fbSession_t * | session | ) |

Return the callback function's application context for a given session.

Parameters

  session |

Returns
  the Application context pointer added to the session

## ◆ fbSessionClone()

fbSession_t * fbSessionClone | ( | fbSession_t * | base | ) |

fbSessionClone

Parameters

  base |

## ◆ fbSessionGetSequence()

uint32_t fbSessionGetSequence | ( | fbSession_t * | session | ) |

fbSessionGetSequence

Parameters

  session |

## ◆ fbSessionSetSequence()

void fbSessionSetSequence | ( | fbSession_t * | session,
|  | uint32_t | sequence )

fbSessionSetSequence

Parameters

  session |
  sequence |

## ◆ fbSessionSetTemplateBuffer()

void fbSessionSetTemplateBuffer | ( | fbSession_t * | session,
|  | fBuf_t * | fbuf )

fbSessionSetTemplateBuffer

Parameters

  session |
  fbuf |

## ◆ fbSessionSetCollector()

void fbSessionSetCollector | ( | fbSession_t * | session,
|  | fbCollector_t * | collector )

fbSessionSetCollector

Parameters

  session |
  collector |

## ◆ fbSessionGetGroup()

unsigned int fbSessionGetGroup | ( | fbSession_t * | session | ) |

fbSessionGetGroup

Parameters

  session |

## ◆ fbSessionClearIntTmplTableFlag()

void fbSessionClearIntTmplTableFlag | ( | fbSession_t * | session | ) |

fbSessionClearIntTmplTableFlag

Parameters

  session |

## ◆ fbSessionClearExtTmplTableFlag()

void fbSessionClearExtTmplTableFlag | ( | fbSession_t * | session | ) |

fbSessionClearExtTmplTableFlag

Parameters

  session |

## ◆ fbSessionIntTmplTableFlagIsSet()

int fbSessionIntTmplTableFlagIsSet | ( | fbSession_t * | session | ) |

fbSessionIntTmplTableFlagIsSet

Parameters

  session |

## ◆ fbSessionExtTmplTableFlagIsSet()

int fbSessionExtTmplTableFlagIsSet | ( | fbSession_t * | session | ) |

fbSessionExtTmplTableFlagIsSet

Parameters

  session |

## ◆ fbConnSpecLookupAI()

gboolean fbConnSpecLookupAI | ( | fbConnSpec_t * | spec,
|  | gboolean | passive,
|  | GError ** | err )

fbConnSpecLookupAI

Parameters

  spec |
  passive |
  err |

## ◆ fbConnSpecInitTLS()

gboolean fbConnSpecInitTLS | ( | fbConnSpec_t * | spec,
|  | gboolean | passive,
|  | GError ** | err )

fbConnSpecInitTLS

Parameters

  spec |
  passive |
  err |

## ◆ fbConnSpecCopy()

fbConnSpec_t * fbConnSpecCopy | ( | fbConnSpec_t * | spec | ) |

fbConnSpecCopy

Parameters

  spec |

## ◆ fbConnSpecFree()

void fbConnSpecFree | ( | fbConnSpec_t * | spec | ) |

fbConnSpecFree

Parameters

  spec |

## ◆ fbConnSpreadCopy()

fbSpreadSpec_t * fbConnSpreadCopy | ( | fbSpreadParams_t * | spec | ) |

fbConnSpreadCopy

Parameters

  spec |

## ◆ fbConnSpreadFree()

void fbConnSpreadFree | ( | fbSpreadSpec_t * | spec | ) |

fbConnSpreadFree

Parameters

  spec |

## ◆ fbConnSpreadError()

const char * fbConnSpreadError | ( | int | err | ) |

fbConnSpreadError

Return a string message for the given Spread error code

Parameters

  err | the spread error code

Returns
  the text message

## ◆ fbExporterSetGroupsToSend()

void fbExporterSetGroupsToSend | ( | fbExporter_t * | exporter,
|  | char ** | groups,
|  | int | num_groups )

fbExporterSetGroupToSend

Parameters

  exporter |
  groups |
  num_groups | of groups in above group list

## ◆ fbExporterCheckGroups()

gboolean fbExporterCheckGroups | ( | fbExporter_t * | exporter,
|  | char ** | groups,
|  | int | num_groups )

fbExporterCheckGroups

Parameters

  exporter |
  groups |
  num_groups | of groups in above group list

Returns
  TRUE if group is in subscribed group list

## ◆ fbExporterGetMTU()

uint16_t fbExporterGetMTU | ( | fbExporter_t * | exporter | ) |

fbExporterGetMTU

Parameters

  exporter |

## ◆ fbExportMessage()

gboolean fbExportMessage | ( | fbExporter_t * | exporter,
|  | uint8_t * | msgbase,
|  | size_t | msglen,
|  | GError ** | err )

fbExportMessage

Parameters

  exporter |
  msgbase |
  msglen |
  err |

## ◆ fbExporterFree()

void fbExporterFree | ( | fbExporter_t * | exporter | ) |

fbExporterFree

Parameters

  exporter |

## ◆ fbCollectorRemoveListenerLastBuf()

void fbCollectorRemoveListenerLastBuf | ( | fBuf_t * | fbuf,
|  | fbCollector_t * | collector )

fbCollectorRemoveListenerLastBuf

Parameters

  fbuf |
  collector |

## ◆ fbCollectorAllocSocket()

fbCollector_t * fbCollectorAllocSocket | ( | fbListener_t * | listener,
|  | void * | ctx,
|  | int | fd,
|  | struct sockaddr * | peer,
|  | size_t | peerlen,
|  | GError ** | err )

fbCollectorAllocSocket

Parameters

  listener |
  ctx |
  fd |
  peer |
  peerlen |
  err |

## ◆ fbCollectorAllocTLS()

fbCollector_t * fbCollectorAllocTLS | ( | fbListener_t * | listener,
|  | void * | ctx,
|  | int | fd,
|  | struct sockaddr * | peer,
|  | size_t | peerlen,
|  | GError ** | err )

fbCollectorAllocTLS

Parameters

  listener |
  ctx |
  fd |
  peer |
  peerlen |
  err |

## ◆ fbCollectMessage()

gboolean fbCollectMessage | ( | fbCollector_t * | collector,
|  | uint8_t * | msgbase,
|  | size_t * | msglen,
|  | GError ** | err )

fbCollectMessage

Parameters

  collector |
  msgbase |
  msglen |
  err |

## ◆ fbCollectorGetFD()

int fbCollectorGetFD | ( | fbCollector_t * | collector | ) |

fbCollectorGetFD

Parameters

  collector |

## ◆ fbCollectorFree()

void fbCollectorFree | ( | fbCollector_t * | collector | ) |

fbCollectorFree

Parameters

  collector |

## ◆ fbCollectorHasTranslator()

gboolean fbCollectorHasTranslator | ( | fbCollector_t * | collector | ) |

fbCollectorHasTranslator

Parameters

  collector |

## ◆ fbCollectMessageBuffer()

gboolean fbCollectMessageBuffer | ( | uint8_t * | hdr,
|  | size_t | b_len,
|  | size_t * | m_len,
|  | GError ** | err )

fbCollectMessageBuffer

used for applications that manage their own connection, file reading, etc.

Parameters

  hdr |
  b_len |
  m_len |
  err |

Returns
  TRUE/FALSE

## ◆ fbCollectorTestGroupMembership()

gboolean fbCollectorTestGroupMembership | ( | fbCollector_t * | collector,
|  | int | group_offset )

fbCollectorTestGroupMembership

Parameters

  collector |
  group_offset |

## ◆ fbListenerAppFree()

void fbListenerAppFree | ( | fbListener_t * | listener,
|  | void * | ctx )

fbListenerAppFree

Parameters

  listener |
  ctx |

## ◆ fbListenerRemoveLastBuf()

void fbListenerRemoveLastBuf | ( | fBuf_t * | fbuf,
|  | fbListener_t * | listener )

fbListenerRemoveLastBuf

Parameters

  fbuf |
  listener |

## ◆ fbListenerRemove()

void fbListenerRemove | ( | fbListener_t * | listener,
|  | int | fd )

fbListenerRemove

Parameters

  listener |
  fd |

## ◆ fbListenerGetConnSpec()

fbConnSpec_t * fbListenerGetConnSpec | ( | fbListener_t * | listener | ) |

fbListenerGetConnSpec

Parameters

  listener |

## ◆ fbCollectorInterruptSocket()

void fbCollectorInterruptSocket | ( | fbCollector_t * | collector | ) |

Interrupt the socket for a given collector to stop it from reading more data.

Parameters

  collector | pointer to the collector to stop reading from

## Data Structure Documentation

## ◆ sp_groupname_st

struct sp_groupname_st

sp_groupname_t

Data Fields
char | name[MAX_GROUP_NAME] |

## ◆ fbSpreadSpec_st

struct fbSpreadSpec_st

fbSpreadSpec_t

Data Fields
fbSession_t * | session | pointer to the session, this MUST be set to a valid session before the spec is passed to fbExporterAllocSpread.
char * | daemon | pointer to the daemon host address, in Spread format. Must be set before the spec is passed to fbExporterAllocSpread
sp_groupname_t * | groups | pointer to array of group names, must have at least one, and must be null term array
int | num_groups | number of groups in groups
sp_groupname_t * | groups_to_send | groups to send to
int | num_groups_to_send |
mailbox | mbox | the mailbox for the connection
char | privgroup[MAX_GROUP_NAME+2] | the connection private name
pthread_mutex_t | write_lock | Spread write lock.
pthread_t | recv_thread | the receiver thread
mailbox | recv_mbox | the receiver's mailbox
char | recv_privgroup[MAX_GROUP_NAME+2] | the connection private name for the receiver
GError * | recv_err | GError for thread errors, set by receiver, read by main.
int | recv_exit | flag to tell the thread to exit
int | recv_max_groups | max size of group name array
int | recv_num_groups | actual size of group name array
sp_groupname_t * | recv_groups | groups array for SP_receive
int | recv_max | length of message buffer
char * | recv_mess | message buffer for receive

## ◆ fbUDPConnSpec_st

struct fbUDPConnSpec_st

An UDP Connection specifier.

These are managed by the collector. The collector creates one fbUDPConnSpec_t per "UDP session." A UDP session is defined by a unique IP and observation domain."

Data Fields
fbSession_t * | session | pointer to the session for this peer address
void * | ctx | application context. Created and owned by the app
union fbUDPConnSpec_st.peer | peer | key to this conn spec
size_t | peerlen | size of peer
struct fbUDPConnSpec_st * | next | link to next one in list
struct fbUDPConnSpec_st * | prev | doubly linked to timeout faster
time_t | last_seen | last seen time
uint32_t | obdomain | with peer address this is the key
gboolean | reject | reject flag

## ◆ fbTemplateOptRec_st

struct fbTemplateOptRec_st

Template metadata options record structure.

Data Fields
uint16_t | template_id | Template ID.
uint8_t | template_padding[6] |
fbVarfield_t | template_name | Template name.
fbVarfield_t | template_description | Template description (optional).

## ◆ fbTemplate_st

struct fbTemplate_st

An IPFIX template or options template structure.

Part of the private interface. Applications should use the fbTemplate calls defined in public.h to manipulate templates instead of accessing this structure directly.

Data Fields
fbInfoModel_t * | model | Information model (for looking up information elements by spec).
int | ref_count | Reference count.
uint16_t | ie_count | Count of information elements in template.
uint16_t | scope_count | Count of scope information elements in template. If sie_count is greater than 0, this template is an options template.
uint16_t | ie_len | Total length of information elements in records described by this template. If the is_varlen flag is set, this represents the minimum length of the information elements in the record (i.e. with each variable length IE's length set to 0).
uint16_t | ie_internal_len | Total length required to store this template in memory. Uses sizeof(fbVarfield_t), sizeof(fbBasicList_t), etc instead of 0 as done with ie_len
uint16_t | tmpl_len | Total length of the template record or options template record defining this template. Used during template input and output.
gboolean | is_varlen | Set to TRUE if this template contains any variable length IEs.
fbInfoElement_t ** | ie_ary | Ordered array of pointers to information elements in this template.
GHashTable * | indices | Map of information element to index in ie_ary.
uint16_t * | off_cache | Field offset cache. For internal use by the transcoder.
gboolean | active | TRUE if this template has been activated (is no longer mutable).
gboolean | default_length | TRUE if any field was created using an fbInfoElementSpec_t with a defaulted length.
fbTemplateOptRec_t * | metadata_rec |
void * | tmpl_ctx | Template context. Created and owned by the application when the listener calls the fbNewTemplateCallback_fn.
fbTemplateCtxFree_fn | ctx_free | Callback to free the ctx pointer when template is freed.
void * | app_ctx | The application's Context pointer for the ctx_free function.

## ◆ fbUDPConnSpec_st.peer

union fbUDPConnSpec_st.peer

key to this conn spec

Data Fields
struct sockaddr | so |
struct sockaddr_in | ip4 |
struct sockaddr_in6 | ip6 |