00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00418 #ifndef _FB_PUBLIC_H_
00419 #define _FB_PUBLIC_H_
00420 #include <fixbuf/autoinc.h>
00421
00422 #ifdef __cplusplus
00423 extern "C" {
00424 #endif
00425
00426 #ident "$Id: public.h 17705 2011-09-08 14:05:36Z ecoff_svn $"
00427
00428
00429
00430
00431
00433 #define FB_ERROR_DOMAIN g_quark_from_string("fixbufError")
00434
00435 #define FB_ERROR_TMPL 1
00436
00440 #define FB_ERROR_EOM 2
00441
00446 #define FB_ERROR_EOF 3
00447
00451 #define FB_ERROR_IPFIX 4
00452
00457 #define FB_ERROR_BUFSZ 5
00458
00459 #define FB_ERROR_IMPL 6
00460
00461 #define FB_ERROR_IO 7
00462
00466 #define FB_ERROR_NLREAD 8
00467
00472 #define FB_ERROR_NLWRITE 9
00473
00476 #define FB_ERROR_NOELEMENT 10
00477
00480 #define FB_ERROR_CONN 11
00481
00485 #define FB_ERROR_NETFLOWV9 12
00486
00489 #define FB_ERROR_TRANSMISC 13
00490
00491
00492
00493
00494
00495 struct fBuf_st;
00501 typedef struct fBuf_st fBuf_t;
00502
00509 typedef struct fbVarfield_st {
00511 size_t len;
00518 uint8_t *buf;
00519 } fbVarfield_t;
00520
00521
00522 struct fbInfoModel_st;
00527 typedef struct fbInfoModel_st fbInfoModel_t;
00528
00534 #define FB_IE_INIT(_name_, _ent_, _num_, _len_, _flags_) \
00535 { {.name = _name_}, 0, _ent_, _num_, _len_, _flags_ }
00536
00542 #define FB_IE_NULL \
00543 { {.name = NULL}, 0, 0, 0, 0, 0 }
00544
00549 #define FB_IE_F_NONE 0x00000000
00550
00555 #define FB_IE_F_ENDIAN 0x00000001
00556
00566 #define FB_IE_F_REVERSIBLE 0x00000040
00567
00575 #define FB_IE_F_ALIEN 0x00000080
00576
00580 #define FB_IE_VARLEN 65535
00581
00586 #define FB_IE_BASIC_LIST 0x7FFD
00587
00591 #define FB_IE_SUBTEMPLATE_LIST 0x7FFE
00592
00596 #define FB_IE_SUBTEMPLATE_MULTILIST 0x7FFF
00597
00605 #define FB_IE_PEN_REVERSE 29305
00606
00615 #define FB_IE_VENDOR_BIT_REVERSE 0x4000
00616
00622 #define FB_IE_REVERSE_STR "reverse"
00623
00625 #define FB_IE_REVERSE_STRLEN 7
00626
00635 typedef struct fbInfoElement_st {
00637 union {
00643 const struct fbInfoElement_st *canon;
00648 char *name;
00649 } ref;
00650
00656 uint32_t midx;
00658 uint32_t ent;
00663 uint16_t num;
00665 uint16_t len;
00667 uint32_t flags;
00668 } fbInfoElement_t;
00669
00674 #define FB_TID_AUTO 0
00675
00679 #define FB_TID_TS 2
00680
00684 #define FB_TID_OTS 3
00685
00689 #define FB_TID_MIN_DATA 256
00690
00691 struct fbTemplate_st;
00697 typedef struct fbTemplate_st fbTemplate_t;
00698
00704 #define FB_IESPEC_NULL { NULL, 0, 0 }
00705
00711 typedef struct fbInfoElementSpec_st {
00713 char *name;
00718 uint16_t len_override;
00725 uint32_t flags;
00726 } fbInfoElementSpec_t;
00727
00728 struct fbSession_st;
00735 typedef struct fbSession_st fbSession_t;
00736
00738 typedef enum fbTransport_en {
00743 FB_SCTP,
00745 FB_TCP,
00747 FB_UDP,
00753 FB_DTLS_SCTP,
00758 FB_TLS_TCP,
00764 FB_DTLS_UDP,
00765 } fbTransport_t;
00766
00771 typedef struct fbConnSpec_st {
00773 fbTransport_t transport;
00775 char *host;
00777 char *svc;
00779 char *ssl_ca_file;
00781 char *ssl_cert_file;
00783 char *ssl_key_file;
00785 char *ssl_key_pass;
00790 void *vai;
00795 void *vssl_ctx;
00796 } fbConnSpec_t;
00797
00801 #define FB_CONNSPEC_INIT { FB_SCTP, NULL, NULL, \
00802 NULL, NULL, NULL, NULL, \
00803 NULL, NULL }
00804
00805 #if HAVE_SPREAD
00806
00811 #define FB_SPREADPARAMS_INIT { 0, 0, 0 }
00812
00813 typedef struct fbSpreadParams_st {
00816 fbSession_t * session;
00819 char * daemon;
00822 char ** groups;
00823 } fbSpreadParams_t;
00824
00825 #endif
00826
00827 struct fbExporter_st;
00833 typedef struct fbExporter_st fbExporter_t;
00834
00835 struct fbCollector_st;
00843 typedef struct fbCollector_st fbCollector_t;
00844
00845 struct fbListener_st;
00852 typedef struct fbListener_st fbListener_t;
00853
00857 typedef struct fbListenerEntry_st fbListenerEntry_t;
00858
00862 struct fbListenerEntry_st
00863 {
00865 fbListenerEntry_t *next;
00867 fbListenerEntry_t *prev;
00869 fbListener_t *listener;
00870 };
00871
00875 typedef struct fbListenerGroupResult_st fbListenerGroupResult_t;
00876
00882 struct fbListenerGroupResult_st
00883 {
00885 fbListenerGroupResult_t *next;
00887 fbListener_t *listener;
00889 fBuf_t *fbuf;
00890 };
00891
00895 typedef struct fbListenerGroup_st
00896 {
00898 fbListenerEntry_t *head;
00900 void *tableForDescriptorsToListeners;
00901 } fbListenerGroup_t;
00902
00915 typedef gboolean (*fbAcceptCallback_fn) (
00916 fBuf_t *buf,
00917 fbListener_t *listener,
00918 struct sockaddr *sAddr,
00919 GError **err);
00920
00931 typedef void (*fbNewTemplateCallback_fn) (
00932 fbSession_t *session,
00933 uint16_t tid,
00934 fbTemplate_t *tmpl);
00935
00939 #define UNDEFINED 0xFF
00940
00943 #define NONE_OF 0x00
00944
00947 #define EXACTLY_ONE_OF 0x01
00948
00951 #define ONE_OR_MORE_OF 0x02
00952
00955 #define ALL_OF 0x03
00956
00959 #define ORDERED 0x04
00960
00967 gboolean fbListValidSemantic(
00968 uint8_t semantic);
00969
00970
00976 typedef struct fbBasicList_st {
00978 uint8_t semantic;
00980 uint16_t numElements;
00982 uint16_t dataLength;
00984 const fbInfoElement_t *infoElement;
00986 uint8_t *dataPtr;
00987 } fbBasicList_t;
00988
00989
00995 fbBasicList_t* fbBasicListAlloc(
00996 void);
00997
01010 void* fbBasicListInit(
01011 fbBasicList_t *basicListPtr,
01012 uint8_t semantic,
01013 const fbInfoElement_t *infoElement,
01014 uint16_t numElements);
01015
01030 void* fbBasicListInitWithOwnBuffer(
01031 fbBasicList_t *basicListPtr,
01032 uint8_t semantic,
01033 const fbInfoElement_t *infoElement,
01034 uint16_t numElements,
01035 uint16_t dataLength,
01036 uint8_t *dataPtr);
01037
01050 void fbBasicListCollectorInit(
01051 fbBasicList_t *basicListPtr);
01052
01053
01061 uint8_t fbBasicListGetSemantic(
01062 fbBasicList_t *basicListPtr);
01063
01072 void fbBasicListSetSemantic(
01073 fbBasicList_t *basicListPtr,
01074 uint8_t semantic);
01075
01076
01084 const fbInfoElement_t* fbBasicListGetInfoElement(
01085 fbBasicList_t *basicListPtr);
01086
01092 void* fbBasicListGetDataPtr(
01093 fbBasicList_t *basicListPtr);
01094
01103 void* fbBasicListGetIndexedDataPtr(
01104 fbBasicList_t *basicListPtr,
01105 uint16_t index);
01106
01115 void* fbBasicListGetNextPtr(
01116 fbBasicList_t *basicListPtr,
01117 void *currentPtr);
01118
01128 void* fbBasicListRealloc(
01129 fbBasicList_t *basicList,
01130 uint16_t newNumElements);
01131
01139 void* fbBasicListAddNewElements(
01140 fbBasicList_t *basicList,
01141 uint16_t numNewElements);
01142
01148 void fbBasicListClear(
01149 fbBasicList_t *basicListPtr);
01150
01157 void fbBasicListClearWithoutFree(
01158 fbBasicList_t *basicList);
01159
01165 void fbBasicListFree(
01166 fbBasicList_t *basicListPtr);
01167
01168
01169
01170
01171
01172
01173
01181 typedef struct fbSubTemplateList_st {
01183 uint8_t semantic;
01185 uint16_t tmplID;
01187 uint16_t numElements;
01189 const fbTemplate_t *tmpl;
01192 union {
01193 size_t length;
01194 uint64_t extra;
01195 } dataLength;
01197 uint8_t *dataPtr;
01198 } fbSubTemplateList_t;
01199
01206 fbSubTemplateList_t* fbSubTemplateListAlloc(
01207 void);
01208
01221 void* fbSubTemplateListInit(
01222 fbSubTemplateList_t *sTL,
01223 uint8_t semantic,
01224 uint16_t tmplID,
01225 const fbTemplate_t *tmpl,
01226 uint16_t numElements);
01227
01242 void* fbSubTemplateListInitWithOwnBuffer(
01243 fbSubTemplateList_t *subTemplateList,
01244 uint8_t semantic,
01245 uint16_t tmplID,
01246 const fbTemplate_t *tmpl,
01247 uint16_t numElements,
01248 uint16_t dataLength,
01249 uint8_t *dataPtr);
01250
01261 void fbSubTemplateListCollectorInit(
01262 fbSubTemplateList_t *STL);
01263
01269 void* fbSubTemplateListGetDataPtr(
01270 const fbSubTemplateList_t *subTemplateListPtr);
01271
01279 void* fbSubTemplateListGetIndexedDataPtr(
01280 const fbSubTemplateList_t *subTemplateListPtr,
01281 uint16_t index);
01282
01294 void* fbSubTemplateListGetNextPtr(
01295 const fbSubTemplateList_t *subTemplateListPtr,
01296 void *currentPtr);
01297
01304 void fbSubTemplateListSetSemantic(
01305 fbSubTemplateList_t *subTemplateListPtr,
01306 uint8_t semantic);
01307
01313 uint8_t fbSubTemplateListGetSemantic(
01314 fbSubTemplateList_t *subTemplateListPtr);
01315
01321 const fbTemplate_t* fbSubTemplateListGetTemplate(
01322 fbSubTemplateList_t *subTemplateListPtr);
01323
01329 uint16_t fbSubTemplateListGetTemplateID(
01330 fbSubTemplateList_t *subTemplateListPtr);
01331
01342 void* fbSubTemplateListRealloc(
01343 fbSubTemplateList_t *subTemplateList,
01344 uint16_t newNumElements);
01345
01354 void* fbSubTemplateListAddNewElements(
01355 fbSubTemplateList_t *subTemplateList,
01356 uint16_t numNewElements);
01357
01371 void fbSubTemplateListClear(
01372 fbSubTemplateList_t *subTemplateListPtr);
01373
01382 void fbSubTemplateListClearWithoutFree(
01383 fbSubTemplateList_t *subTemplateListPtr);
01384
01392 void fbSubTemplateListFree(
01393 fbSubTemplateList_t *subTemplateListPtr);
01394
01395
01413 typedef struct fbSubTemplateMultiListEntry_st {
01415 uint16_t tmplID;
01417 uint16_t numElements;
01419 fbTemplate_t *tmpl;
01421 size_t dataLength;
01423 uint8_t *dataPtr;
01424 } fbSubTemplateMultiListEntry_t;
01425
01430 typedef struct fbSubTemplateMultiList_st {
01432 uint8_t semantic;
01434 uint16_t numElements;
01436 fbSubTemplateMultiListEntry_t *firstEntry;
01437 } fbSubTemplateMultiList_t;
01438
01448 fbSubTemplateMultiListEntry_t* fbSubTemplateMultiListInit(
01449 fbSubTemplateMultiList_t *STML,
01450 uint8_t semantic,
01451 uint16_t numElements);
01452
01459 void fbSubTemplateMultiListSetSemantic(
01460 fbSubTemplateMultiList_t *STML,
01461 uint8_t semantic);
01462
01468 uint8_t fbSubTemplateMultiListGetSemantic(
01469 fbSubTemplateMultiList_t *STML);
01470
01477 void fbSubTemplateMultiListClear(
01478 fbSubTemplateMultiList_t *STML);
01479
01489 void fbSubTemplateMultiListClearEntries(
01490 fbSubTemplateMultiList_t *STML);
01491
01497 void fbSubTemplateMultiListFree(
01498 fbSubTemplateMultiList_t *STML);
01499
01509 fbSubTemplateMultiListEntry_t* fbSubTemplateMultiListRealloc(
01510 fbSubTemplateMultiList_t *STML,
01511 uint16_t newNumEntries);
01512
01521 fbSubTemplateMultiListEntry_t* fbSubTemplateMultiListAddNewEntries(
01522 fbSubTemplateMultiList_t *STML,
01523 uint16_t numNewEntries);
01524
01530 fbSubTemplateMultiListEntry_t* fbSubTemplateMultiListGetFirstEntry(
01531 fbSubTemplateMultiList_t *STML);
01532
01540 fbSubTemplateMultiListEntry_t* fbSubTemplateMultiListGetIndexedEntry(
01541 fbSubTemplateMultiList_t *STML,
01542 uint16_t index);
01543
01555 fbSubTemplateMultiListEntry_t* fbSubTemplateMultiListGetNextEntry(
01556 fbSubTemplateMultiList_t *STML,
01557 fbSubTemplateMultiListEntry_t *currentEntry);
01558
01570 void* fbSubTemplateMultiListEntryInit(
01571 fbSubTemplateMultiListEntry_t *entry,
01572 uint16_t tmplID,
01573 fbTemplate_t *tmpl,
01574 uint16_t numElements);
01575
01586 void *fbSubTemplateMultiListEntryRealloc(
01587 fbSubTemplateMultiListEntry_t *entry,
01588 uint16_t newNumElements);
01589
01596 void fbSubTemplateMultiListEntryClear(
01597 fbSubTemplateMultiListEntry_t *entry);
01598
01605 void* fbSubTemplateMultiListEntryGetDataPtr(
01606 fbSubTemplateMultiListEntry_t *entry);
01607
01619 void* fbSubTemplateMultiListEntryNextDataPtr(
01620 fbSubTemplateMultiListEntry_t *entry,
01621 void *currentPtr);
01622
01633 void* fbSubTemplateMultiListEntryGetIndexedPtr(
01634 fbSubTemplateMultiListEntry_t *entry,
01635 uint16_t index);
01636
01643 const fbTemplate_t* fbSubTemplateMultiListEntryGetTemplate(
01644 fbSubTemplateMultiListEntry_t *entry);
01645
01652 uint16_t fbSubTemplateMultiListEntryGetTemplateID(
01653 fbSubTemplateMultiListEntry_t *entry);
01654
01655
01656
01662 fbListenerGroup_t* fbListenerGroupAlloc(
01663 void);
01664
01674 int fbListenerGroupAddListener(
01675 fbListenerGroup_t *group,
01676 const fbListener_t *listener);
01677
01687 int fbListenerGroupDeleteListener(
01688 fbListenerGroup_t *group,
01689 const fbListener_t *listener);
01690
01701 fbListenerGroupResult_t* fbListenerGroupWait(
01702 fbListenerGroup_t *group,
01703 GError **err);
01704
01715 gboolean fbListenerWaitAcceptCallback(
01716 fbListener_t *listener,
01717 fbAcceptCallback_fn callback,
01718 GError **err);
01719
01732 gboolean fbListenerGroupWaitAcceptCallback(
01733 fbListenerGroup_t *group,
01734 fbAcceptCallback_fn callback,
01735 GError **err);
01736
01749 fBuf_t *fbListenerOwnSocketCollectorTCP(
01750 fbListener_t *listener,
01751 int sock,
01752 GError **err);
01753
01763 fBuf_t *fbListenerOwnSocketCollectorTLS(
01764 fbListener_t *listener,
01765 int sock,
01766 GError **err);
01767
01773 void fBufInterruptSocket(
01774 fBuf_t *fbuf);
01775
01776
01786 typedef gboolean (*fbListenerAppInit_fn) (
01787 fbListener_t *listener,
01788 void **ctx,
01789 int fd,
01790 struct sockaddr *peer,
01791 size_t peerlen,
01792 GError **err);
01793
01798 typedef void (*fbListenerAppFree_fn) (
01799 void *ctx);
01800
01801
01802
01803
01804
01805
01806
01823 gboolean fBufSetInternalTemplate(
01824 fBuf_t *fbuf,
01825 uint16_t int_tid,
01826 GError **err);
01827
01845 gboolean fBufSetExportTemplate(
01846 fBuf_t *fbuf,
01847 uint16_t ext_tid,
01848 GError **err);
01849
01850 #if HAVE_SPREAD
01851
01868 void fBufSetSpreadExportGroup(
01869 fBuf_t *fbuf,
01870 char **groups,
01871 int num_groups,
01872 GError **err);
01873 #endif
01874
01889 void fBufSetAutomaticMode(
01890 fBuf_t *fbuf,
01891 gboolean automatic);
01892
01900 fbSession_t *fBufGetSession(
01901 fBuf_t *fbuf);
01902
01911 void fBufFree(
01912 fBuf_t *fbuf);
01913
01926 fBuf_t *fBufAllocForExport(
01927 fbSession_t *session,
01928 fbExporter_t *exporter);
01929
01939 fbExporter_t *fBufGetExporter(
01940 fBuf_t *fbuf);
01941
01952 void fBufSetExporter(
01953 fBuf_t *fbuf,
01954 fbExporter_t *exporter);
01955
01956
01980 gboolean fBufAppend(
01981 fBuf_t *fbuf,
01982 uint8_t *recbase,
01983 size_t recsize,
01984 GError **err);
01985
01995 gboolean fBufEmit(
01996 fBuf_t *fbuf,
01997 GError **err);
01998
02010 void fBufSetExportTime(
02011 fBuf_t *fbuf,
02012 uint32_t extime);
02013
02026 fBuf_t *fBufAllocForCollection(
02027 fbSession_t *session,
02028 fbCollector_t *collector);
02029
02039 fbCollector_t *fBufGetCollector(
02040 fBuf_t *fbuf);
02041
02052 void fBufSetCollector(
02053 fBuf_t *fbuf,
02054 fbCollector_t *collector);
02055
02085 gboolean fBufNext(
02086 fBuf_t *fbuf,
02087 uint8_t *recbase,
02088 size_t *recsize,
02089 GError **err);
02090
02104 gboolean fBufNextMessage(
02105 fBuf_t *fbuf,
02106 GError **err);
02107
02115 uint32_t fBufGetExportTime(
02116 fBuf_t *fbuf);
02117
02137 fbTemplate_t *fBufGetCollectionTemplate(
02138 fBuf_t *fbuf,
02139 uint16_t *ext_tid);
02140
02159 fbTemplate_t *fBufNextCollectionTemplate(
02160 fBuf_t *fbuf,
02161 uint16_t *ext_tid,
02162 GError **err);
02163
02175 fbInfoModel_t *fbInfoModelAlloc();
02176
02185 void fbInfoModelFree(
02186 fbInfoModel_t *model);
02187
02202 void fbInfoModelAddElement(
02203 fbInfoModel_t *model,
02204 fbInfoElement_t *ie);
02205
02220 void fbInfoModelAddElementArray(
02221 fbInfoModel_t *model,
02222 fbInfoElement_t *ie);
02223
02235 const fbInfoElement_t *fbInfoModelGetElementByName(
02236 fbInfoModel_t *model,
02237 const char *name);
02238
02251 const fbInfoElement_t *fbInfoModelGetElementByID(
02252 fbInfoModel_t *model,
02253 uint16_t id,
02254 uint32_t ent);
02255
02273 fbTemplate_t *fbTemplateAlloc(
02274 fbInfoModel_t *model);
02275
02292 gboolean fbTemplateAppend(
02293 fbTemplate_t *tmpl,
02294 fbInfoElement_t *ex_ie,
02295 GError **err);
02296
02312 gboolean fbTemplateAppendSpec(
02313 fbTemplate_t *tmpl,
02314 fbInfoElementSpec_t *spec,
02315 uint32_t flags,
02316 GError **err);
02317
02335 gboolean fbTemplateAppendSpecArray(
02336 fbTemplate_t *tmpl,
02337 fbInfoElementSpec_t *spec,
02338 uint32_t flags,
02339 GError **err);
02340
02348 uint32_t fbTemplateCountElements(
02349 fbTemplate_t *tmpl);
02350
02360 void fbTemplateSetOptionsScope(
02361 fbTemplate_t *tmpl,
02362 uint16_t scope_count);
02363
02371 uint32_t fbTemplateGetOptionsScope(
02372 fbTemplate_t *tmpl);
02373
02385 gboolean fbTemplateContainsElement(
02386 fbTemplate_t *tmpl,
02387 const fbInfoElement_t *ex_ie);
02388
02398 gboolean fbTemplateContainsElementByName(
02399 fbTemplate_t *tmpl,
02400 fbInfoElementSpec_t *spec);
02401
02411 gboolean fbTemplateContainsAllElementsByName(
02412 fbTemplate_t *tmpl,
02413 fbInfoElementSpec_t *spec);
02414
02422 void fbTemplateFreeUnused(
02423 fbTemplate_t *tmpl);
02424
02438 fbSession_t *fbSessionAlloc(
02439 fbInfoModel_t *model);
02440
02454 void fbSessionAddTemplateCallback(
02455 fbSession_t *session,
02456 fbNewTemplateCallback_fn callback);
02457
02469 void fbSessionAddTemplatePair(
02470 fbSession_t *session,
02471 uint16_t ent_tid,
02472 uint16_t int_tid);
02473
02483 void fbSessionRemoveTemplatePair(
02484 fbSession_t *session,
02485 uint16_t ext_tid);
02486
02495 uint16_t fbSessionLookupTemplatePair(
02496 fbSession_t *session,
02497 uint16_t ext_tid);
02498
02508 void fbSessionFree(
02509 fbSession_t *session);
02510
02523 void fbSessionResetExternal(
02524 fbSession_t *session);
02525
02541 void fbSessionSetDomain(
02542 fbSession_t *session,
02543 uint32_t domain);
02544
02552 uint32_t fbSessionGetDomain(
02553 fbSession_t *session);
02554
02555 #if HAVE_SPREAD
02556
02577 gboolean fbSessionAddTemplatesMulticast(
02578 fbSession_t *session,
02579 char **groups,
02580 gboolean internal,
02581 uint16_t tid,
02582 fbTemplate_t *tmpl,
02583 GError **err);
02584
02585 #endif
02586
02599 gboolean fbSessionExportTemplate(
02600 fbSession_t *session,
02601 uint16_t tid,
02602 GError **err);
02603
02615 gboolean fbSessionExportTemplates(
02616 fbSession_t *session,
02617 GError **err);
02618
02634 uint16_t fbSessionAddTemplate(
02635 fbSession_t *session,
02636 gboolean internal,
02637 uint16_t tid,
02638 fbTemplate_t *tmpl,
02639 GError **err);
02640
02653 gboolean fbSessionRemoveTemplate(
02654 fbSession_t *session,
02655 gboolean internal,
02656 uint16_t tid,
02657 GError **err);
02658
02670 fbTemplate_t *fbSessionGetTemplate(
02671 fbSession_t *session,
02672 gboolean internal,
02673 uint16_t tid,
02674 GError **err);
02675
02688 fbExporter_t *fbExporterAllocNet(
02689 fbConnSpec_t *spec);
02690
02691 #if HAVE_SPREAD
02692
02703 int fbCollectorGetSpreadReturnGroups(
02704 fbCollector_t *collector,
02705 char *groups[]);
02706
02720 fbExporter_t *fbExporterAllocSpread(
02721 fbSpreadParams_t *params );
02722
02723 #endif
02724
02736 fbExporter_t *fbExporterAllocFile(
02737 const char *path);
02738
02747 fbExporter_t *fbExporterAllocFP(
02748 FILE *fp);
02749
02762 void fbExporterSetStream(
02763 fbExporter_t *exporter,
02764 int sctp_stream);
02765
02778 void fbExporterAutoStream(
02779 fbExporter_t *exporter);
02780
02788 void fbExporterClose(
02789 fbExporter_t *exporter);
02790
02803 fbCollector_t *fbCollectorAllocFile(
02804 void *ctx,
02805 const char *path,
02806 GError **err);
02807
02818 fbCollector_t *fbCollectorAllocFP(
02819 void *ctx,
02820 FILE *fp);
02821
02822
02823 #ifdef HAVE_SPREAD
02824
02834 fbCollector_t *fbCollectorAllocSpread (
02835 void *ctx,
02836 fbSpreadParams_t *params,
02837 GError **err );
02838
02839 #endif
02840
02851 void *fbCollectorGetContext(
02852 fbCollector_t *collector);
02853
02864 void fbCollectorClose(
02865 fbCollector_t *collector);
02866
02867
02868
02894 fbListener_t *fbListenerAlloc(
02895 fbConnSpec_t *spec,
02896 fbSession_t *session,
02897 fbListenerAppInit_fn appinit,
02898 fbListenerAppFree_fn appfree,
02899 GError **err);
02900
02908 void fbListenerFree(
02909 fbListener_t *listener);
02910
02932 fBuf_t *fbListenerWait(
02933 fbListener_t *listener,
02934 GError **err);
02935
02946 fBuf_t *fbListenerWaitNoCollectors(
02947 fbListener_t *listener,
02948 GError **err);
02956 void fbListenerInterrupt(
02957 fbListener_t *listener);
02958
02959
02975 gboolean fbListenerGetCollector(
02976 fbListener_t *listener,
02977 fbCollector_t **collector,
02978 GError **err);
02979
02980
02981
02982
02998 gboolean fbCollectorClearTranslator(
02999 fbCollector_t *collector,
03000 GError **err);
03001
03002
03018 gboolean fbCollectorSetNetflowV9Translator(
03019 fbCollector_t *collector,
03020 GError **err);
03021
03028 struct sockaddr* fbCollectorGetPeer(
03029 fbCollector_t *collector);
03030
03031
03032
03033 #ifdef __cplusplus
03034 }
03035 #endif
03036
03037 #endif