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
00420 #ifndef _FB_PUBLIC_H_
00421 #define _FB_PUBLIC_H_
00422 #include <fixbuf/autoinc.h>
00423
00424 #ifdef __cplusplus
00425 extern "C" {
00426 #endif
00427
00428 #ident "$Id: public.h 17098 2011-05-26 19:30:16Z ecoff_svn $"
00429
00430
00431
00432
00433
00435 #define FB_ERROR_DOMAIN g_quark_from_string("fixbufError")
00436
00437 #define FB_ERROR_TMPL 1
00438
00442 #define FB_ERROR_EOM 2
00443
00448 #define FB_ERROR_EOF 3
00449
00453 #define FB_ERROR_IPFIX 4
00454
00459 #define FB_ERROR_BUFSZ 5
00460
00461 #define FB_ERROR_IMPL 6
00462
00463 #define FB_ERROR_IO 7
00464
00468 #define FB_ERROR_NLREAD 8
00469
00474 #define FB_ERROR_NLWRITE 9
00475
00478 #define FB_ERROR_NOELEMENT 10
00479
00482 #define FB_ERROR_CONN 11
00483
00487 #define FB_ERROR_NETFLOWV9 12
00488
00491 #define FB_ERROR_TRANSMISC 13
00492
00493
00494
00495
00496
00497 struct fBuf_st;
00503 typedef struct fBuf_st fBuf_t;
00504
00511 typedef struct fbVarfield_st {
00513 size_t len;
00520 uint8_t *buf;
00521 } fbVarfield_t;
00522
00523
00524 struct fbInfoModel_st;
00529 typedef struct fbInfoModel_st fbInfoModel_t;
00530
00536 #define FB_IE_INIT(_name_, _ent_, _num_, _len_, _flags_) \
00537 { {.name = _name_}, 0, _ent_, _num_, _len_, _flags_ }
00538
00544 #define FB_IE_NULL \
00545 { {.name = NULL}, 0, 0, 0, 0, 0 }
00546
00551 #define FB_IE_F_NONE 0x00000000
00552
00557 #define FB_IE_F_ENDIAN 0x00000001
00558
00568 #define FB_IE_F_REVERSIBLE 0x00000040
00569
00577 #define FB_IE_F_ALIEN 0x00000080
00578
00582 #define FB_IE_VARLEN 65535
00583
00588 #define FB_IE_BASIC_LIST 0x7FFD
00589
00593 #define FB_IE_SUBTEMPLATE_LIST 0x7FFE
00594
00598 #define FB_IE_SUBTEMPLATE_MULTILIST 0x7FFF
00599
00607 #define FB_IE_PEN_REVERSE 29305
00608
00617 #define FB_IE_VENDOR_BIT_REVERSE 0x4000
00618
00624 #define FB_IE_REVERSE_STR "reverse"
00625
00627 #define FB_IE_REVERSE_STRLEN 7
00628
00637 typedef struct fbInfoElement_st {
00639 union {
00645 const struct fbInfoElement_st *canon;
00650 char *name;
00651 } ref;
00652
00658 uint32_t midx;
00660 uint32_t ent;
00665 uint16_t num;
00667 uint16_t len;
00669 uint32_t flags;
00670 } fbInfoElement_t;
00671
00676 #define FB_TID_AUTO 0
00677
00681 #define FB_TID_TS 2
00682
00686 #define FB_TID_OTS 3
00687
00691 #define FB_TID_MIN_DATA 256
00692
00693 struct fbTemplate_st;
00699 typedef struct fbTemplate_st fbTemplate_t;
00700
00706 #define FB_IESPEC_NULL { NULL, 0, 0 }
00707
00713 typedef struct fbInfoElementSpec_st {
00715 char *name;
00720 uint16_t len_override;
00727 uint32_t flags;
00728 } fbInfoElementSpec_t;
00729
00730 struct fbSession_st;
00737 typedef struct fbSession_st fbSession_t;
00738
00740 typedef enum fbTransport_en {
00745 FB_SCTP,
00747 FB_TCP,
00749 FB_UDP,
00755 FB_DTLS_SCTP,
00760 FB_TLS_TCP,
00766 FB_DTLS_UDP,
00767 } fbTransport_t;
00768
00773 typedef struct fbConnSpec_st {
00775 fbTransport_t transport;
00777 char *host;
00779 char *svc;
00781 char *ssl_ca_file;
00783 char *ssl_cert_file;
00785 char *ssl_key_file;
00787 char *ssl_key_pass;
00792 void *vai;
00797 void *vssl_ctx;
00798 } fbConnSpec_t;
00799
00803 #define FB_CONNSPEC_INIT { FB_SCTP, NULL, NULL, \
00804 NULL, NULL, NULL, NULL, \
00805 NULL, NULL }
00806
00807 #if HAVE_SPREAD
00808
00813 #define FB_SPREADPARAMS_INIT { 0, 0, 0 }
00814
00815 typedef struct fbSpreadParams_st {
00818 fbSession_t * session;
00821 char * daemon;
00824 char ** groups;
00825 } fbSpreadParams_t;
00826
00827 #endif
00828
00829 struct fbExporter_st;
00835 typedef struct fbExporter_st fbExporter_t;
00836
00837 struct fbCollector_st;
00845 typedef struct fbCollector_st fbCollector_t;
00846
00847 struct fbListener_st;
00854 typedef struct fbListener_st fbListener_t;
00855
00859 typedef struct fbListenerEntry_st fbListenerEntry_t;
00860
00864 struct fbListenerEntry_st
00865 {
00867 fbListenerEntry_t *next;
00869 fbListenerEntry_t *prev;
00871 fbListener_t *listener;
00872 };
00873
00877 typedef struct fbListenerGroupResult_st fbListenerGroupResult_t;
00878
00884 struct fbListenerGroupResult_st
00885 {
00887 fbListenerGroupResult_t *next;
00889 fbListener_t *listener;
00891 fBuf_t *fbuf;
00892 };
00893
00897 typedef struct fbListenerGroup_st
00898 {
00900 fbListenerEntry_t *head;
00902 void *tableForDescriptorsToListeners;
00903 } fbListenerGroup_t;
00904
00917 typedef gboolean (*fbAcceptCallback_fn) (
00918 fBuf_t *buf,
00919 fbListener_t *listener,
00920 struct sockaddr *sAddr,
00921 GError **err);
00922
00933 typedef void (*fbNewTemplateCallback_fn) (
00934 fbSession_t *session,
00935 uint16_t tid,
00936 fbTemplate_t *tmpl);
00937
00941 #define UNDEFINED 0xFF
00942
00945 #define NONE_OF 0x00
00946
00949 #define EXACTLY_ONE_OF 0x01
00950
00953 #define ONE_OR_MORE_OF 0x02
00954
00957 #define ALL_OF 0x03
00958
00961 #define ORDERED 0x04
00962
00969 gboolean fbListValidSemantic(
00970 uint8_t semantic);
00971
00972
00978 typedef struct fbBasicList_st {
00980 uint8_t semantic;
00982 uint16_t numElements;
00984 uint16_t dataLength;
00986 const fbInfoElement_t *infoElement;
00988 uint8_t *dataPtr;
00989 } fbBasicList_t;
00990
00991
00997 fbBasicList_t* fbBasicListAlloc(
00998 void);
00999
01012 void* fbBasicListInit(
01013 fbBasicList_t *basicListPtr,
01014 uint8_t semantic,
01015 const fbInfoElement_t *infoElement,
01016 uint16_t numElements);
01017
01032 void* fbBasicListInitWithOwnBuffer(
01033 fbBasicList_t *basicListPtr,
01034 uint8_t semantic,
01035 const fbInfoElement_t *infoElement,
01036 uint16_t numElements,
01037 uint16_t dataLength,
01038 uint8_t *dataPtr);
01039
01052 void fbBasicListCollectorInit(
01053 fbBasicList_t *basicListPtr);
01054
01055
01063 uint8_t fbBasicListGetSemantic(
01064 fbBasicList_t *basicListPtr);
01065
01074 void fbBasicListSetSemantic(
01075 fbBasicList_t *basicListPtr,
01076 uint8_t semantic);
01077
01078
01086 const fbInfoElement_t* fbBasicListGetInfoElement(
01087 fbBasicList_t *basicListPtr);
01088
01094 void* fbBasicListGetDataPtr(
01095 fbBasicList_t *basicListPtr);
01096
01105 void* fbBasicListGetIndexedDataPtr(
01106 fbBasicList_t *basicListPtr,
01107 uint16_t index);
01108
01117 void* fbBasicListGetNextPtr(
01118 fbBasicList_t *basicListPtr,
01119 void *currentPtr);
01120
01130 void* fbBasicListRealloc(
01131 fbBasicList_t *basicList,
01132 uint16_t newNumElements);
01133
01141 void* fbBasicListAddNewElements(
01142 fbBasicList_t *basicList,
01143 uint16_t numNewElements);
01144
01150 void fbBasicListClear(
01151 fbBasicList_t *basicListPtr);
01152
01159 void fbBasicListClearWithoutFree(
01160 fbBasicList_t *basicList);
01161
01167 void fbBasicListFree(
01168 fbBasicList_t *basicListPtr);
01169
01170
01171
01172
01173
01174
01175
01183 typedef struct fbSubTemplateList_st {
01185 uint8_t semantic;
01187 uint16_t tmplID;
01189 uint16_t numElements;
01191 const fbTemplate_t *tmpl;
01194 union {
01195 size_t length;
01196 uint64_t extra;
01197 } dataLength;
01199 uint8_t *dataPtr;
01200 } fbSubTemplateList_t;
01201
01208 fbSubTemplateList_t* fbSubTemplateListAlloc(
01209 void);
01210
01223 void* fbSubTemplateListInit(
01224 fbSubTemplateList_t *sTL,
01225 uint8_t semantic,
01226 uint16_t tmplID,
01227 const fbTemplate_t *tmpl,
01228 uint16_t numElements);
01229
01244 void* fbSubTemplateListInitWithOwnBuffer(
01245 fbSubTemplateList_t *subTemplateList,
01246 uint8_t semantic,
01247 uint16_t tmplID,
01248 const fbTemplate_t *tmpl,
01249 uint16_t numElements,
01250 uint16_t dataLength,
01251 uint8_t *dataPtr);
01252
01263 void fbSubTemplateListCollectorInit(
01264 fbSubTemplateList_t *STL);
01265
01271 void* fbSubTemplateListGetDataPtr(
01272 const fbSubTemplateList_t *subTemplateListPtr);
01273
01281 void* fbSubTemplateListGetIndexedDataPtr(
01282 const fbSubTemplateList_t *subTemplateListPtr,
01283 uint16_t index);
01284
01296 void* fbSubTemplateListGetNextPtr(
01297 const fbSubTemplateList_t *subTemplateListPtr,
01298 void *currentPtr);
01299
01306 void fbSubTemplateListSetSemantic(
01307 fbSubTemplateList_t *subTemplateListPtr,
01308 uint8_t semantic);
01309
01315 uint8_t fbSubTemplateListGetSemantic(
01316 fbSubTemplateList_t *subTemplateListPtr);
01317
01323 const fbTemplate_t* fbSubTemplateListGetTemplate(
01324 fbSubTemplateList_t *subTemplateListPtr);
01325
01331 uint16_t fbSubTemplateListGetTemplateID(
01332 fbSubTemplateList_t *subTemplateListPtr);
01333
01344 void* fbSubTemplateListRealloc(
01345 fbSubTemplateList_t *subTemplateList,
01346 uint16_t newNumElements);
01347
01356 void* fbSubTemplateListAddNewElements(
01357 fbSubTemplateList_t *subTemplateList,
01358 uint16_t numNewElements);
01359
01373 void fbSubTemplateListClear(
01374 fbSubTemplateList_t *subTemplateListPtr);
01375
01384 void fbSubTemplateListClearWithoutFree(
01385 fbSubTemplateList_t *subTemplateListPtr);
01386
01394 void fbSubTemplateListFree(
01395 fbSubTemplateList_t *subTemplateListPtr);
01396
01397
01415 typedef struct fbSubTemplateMultiListEntry_st {
01417 uint16_t tmplID;
01419 uint16_t numElements;
01421 fbTemplate_t *tmpl;
01423 size_t dataLength;
01425 uint8_t *dataPtr;
01426 } fbSubTemplateMultiListEntry_t;
01427
01432 typedef struct fbSubTemplateMultiList_st {
01434 uint8_t semantic;
01436 uint16_t numElements;
01438 fbSubTemplateMultiListEntry_t *firstEntry;
01439 } fbSubTemplateMultiList_t;
01440
01450 fbSubTemplateMultiListEntry_t* fbSubTemplateMultiListInit(
01451 fbSubTemplateMultiList_t *STML,
01452 uint8_t semantic,
01453 uint16_t numElements);
01454
01461 void fbSubTemplateMultiListSetSemantic(
01462 fbSubTemplateMultiList_t *STML,
01463 uint8_t semantic);
01464
01470 uint8_t fbSubTemplateMultiListGetSemantic(
01471 fbSubTemplateMultiList_t *STML);
01472
01479 void fbSubTemplateMultiListClear(
01480 fbSubTemplateMultiList_t *STML);
01481
01491 void fbSubTemplateMultiListClearEntries(
01492 fbSubTemplateMultiList_t *STML);
01493
01499 void fbSubTemplateMultiListFree(
01500 fbSubTemplateMultiList_t *STML);
01501
01511 fbSubTemplateMultiListEntry_t* fbSubTemplateMultiListRealloc(
01512 fbSubTemplateMultiList_t *STML,
01513 uint16_t newNumEntries);
01514
01523 fbSubTemplateMultiListEntry_t* fbSubTemplateMultiListAddNewEntries(
01524 fbSubTemplateMultiList_t *STML,
01525 uint16_t numNewEntries);
01526
01532 fbSubTemplateMultiListEntry_t* fbSubTemplateMultiListGetFirstEntry(
01533 fbSubTemplateMultiList_t *STML);
01534
01542 fbSubTemplateMultiListEntry_t* fbSubTemplateMultiListGetIndexedEntry(
01543 fbSubTemplateMultiList_t *STML,
01544 uint16_t index);
01545
01557 fbSubTemplateMultiListEntry_t* fbSubTemplateMultiListGetNextEntry(
01558 fbSubTemplateMultiList_t *STML,
01559 fbSubTemplateMultiListEntry_t *currentEntry);
01560
01572 void* fbSubTemplateMultiListEntryInit(
01573 fbSubTemplateMultiListEntry_t *entry,
01574 uint16_t tmplID,
01575 fbTemplate_t *tmpl,
01576 uint16_t numElements);
01577
01588 void *fbSubTemplateMultiListEntryRealloc(
01589 fbSubTemplateMultiListEntry_t *entry,
01590 uint16_t newNumElements);
01591
01598 void fbSubTemplateMultiListEntryClear(
01599 fbSubTemplateMultiListEntry_t *entry);
01600
01607 void* fbSubTemplateMultiListEntryGetDataPtr(
01608 fbSubTemplateMultiListEntry_t *entry);
01609
01621 void* fbSubTemplateMultiListEntryNextDataPtr(
01622 fbSubTemplateMultiListEntry_t *entry,
01623 void *currentPtr);
01624
01635 void* fbSubTemplateMultiListEntryGetIndexedPtr(
01636 fbSubTemplateMultiListEntry_t *entry,
01637 uint16_t index);
01638
01645 const fbTemplate_t* fbSubTemplateMultiListEntryGetTemplate(
01646 fbSubTemplateMultiListEntry_t *entry);
01647
01654 uint16_t fbSubTemplateMultiListEntryGetTemplateID(
01655 fbSubTemplateMultiListEntry_t *entry);
01656
01657
01658
01664 fbListenerGroup_t* fbListenerGroupAlloc(
01665 void);
01666
01676 int fbListenerGroupAddListener(
01677 fbListenerGroup_t *group,
01678 const fbListener_t *listener);
01679
01689 int fbListenerGroupDeleteListener(
01690 fbListenerGroup_t *group,
01691 const fbListener_t *listener);
01692
01703 fbListenerGroupResult_t* fbListenerGroupWait(
01704 fbListenerGroup_t *group,
01705 GError **err);
01706
01717 gboolean fbListenerWaitAcceptCallback(
01718 fbListener_t *listener,
01719 fbAcceptCallback_fn callback,
01720 GError **err);
01721
01734 gboolean fbListenerGroupWaitAcceptCallback(
01735 fbListenerGroup_t *group,
01736 fbAcceptCallback_fn callback,
01737 GError **err);
01738
01751 fBuf_t *fbListenerOwnSocketCollectorTCP(
01752 fbListener_t *listener,
01753 int sock,
01754 GError **err);
01755
01765 fBuf_t *fbListenerOwnSocketCollectorTLS(
01766 fbListener_t *listener,
01767 int sock,
01768 GError **err);
01769
01775 void fBufInterruptSocket(
01776 fBuf_t *fbuf);
01777
01778
01788 typedef gboolean (*fbListenerAppInit_fn) (
01789 fbListener_t *listener,
01790 void **ctx,
01791 int fd,
01792 struct sockaddr *peer,
01793 size_t peerlen,
01794 GError **err);
01795
01800 typedef void (*fbListenerAppFree_fn) (
01801 void *ctx);
01802
01803
01804
01805
01806
01807
01808
01825 gboolean fBufSetInternalTemplate(
01826 fBuf_t *fbuf,
01827 uint16_t int_tid,
01828 GError **err);
01829
01847 gboolean fBufSetExportTemplate(
01848 fBuf_t *fbuf,
01849 uint16_t ext_tid,
01850 GError **err);
01851
01852 #if HAVE_SPREAD
01853
01870 void fBufSetSpreadExportGroup(
01871 fBuf_t *fbuf,
01872 char **groups,
01873 int num_groups,
01874 GError **err);
01875 #endif
01876
01891 void fBufSetAutomaticMode(
01892 fBuf_t *fbuf,
01893 gboolean automatic);
01894
01902 fbSession_t *fBufGetSession(
01903 fBuf_t *fbuf);
01904
01913 void fBufFree(
01914 fBuf_t *fbuf);
01915
01928 fBuf_t *fBufAllocForExport(
01929 fbSession_t *session,
01930 fbExporter_t *exporter);
01931
01941 fbExporter_t *fBufGetExporter(
01942 fBuf_t *fbuf);
01943
01954 void fBufSetExporter(
01955 fBuf_t *fbuf,
01956 fbExporter_t *exporter);
01957
01958
01982 gboolean fBufAppend(
01983 fBuf_t *fbuf,
01984 uint8_t *recbase,
01985 size_t recsize,
01986 GError **err);
01987
01997 gboolean fBufEmit(
01998 fBuf_t *fbuf,
01999 GError **err);
02000
02012 void fBufSetExportTime(
02013 fBuf_t *fbuf,
02014 uint32_t extime);
02015
02028 fBuf_t *fBufAllocForCollection(
02029 fbSession_t *session,
02030 fbCollector_t *collector);
02031
02041 fbCollector_t *fBufGetCollector(
02042 fBuf_t *fbuf);
02043
02054 void fBufSetCollector(
02055 fBuf_t *fbuf,
02056 fbCollector_t *collector);
02057
02087 gboolean fBufNext(
02088 fBuf_t *fbuf,
02089 uint8_t *recbase,
02090 size_t *recsize,
02091 GError **err);
02092
02106 gboolean fBufNextMessage(
02107 fBuf_t *fbuf,
02108 GError **err);
02109
02117 uint32_t fBufGetExportTime(
02118 fBuf_t *fbuf);
02119
02139 fbTemplate_t *fBufGetCollectionTemplate(
02140 fBuf_t *fbuf,
02141 uint16_t *ext_tid);
02142
02161 fbTemplate_t *fBufNextCollectionTemplate(
02162 fBuf_t *fbuf,
02163 uint16_t *ext_tid,
02164 GError **err);
02165
02177 fbInfoModel_t *fbInfoModelAlloc();
02178
02187 void fbInfoModelFree(
02188 fbInfoModel_t *model);
02189
02204 void fbInfoModelAddElement(
02205 fbInfoModel_t *model,
02206 fbInfoElement_t *ie);
02207
02222 void fbInfoModelAddElementArray(
02223 fbInfoModel_t *model,
02224 fbInfoElement_t *ie);
02225
02237 const fbInfoElement_t *fbInfoModelGetElementByName(
02238 fbInfoModel_t *model,
02239 const char *name);
02240
02253 const fbInfoElement_t *fbInfoModelGetElementByID(
02254 fbInfoModel_t *model,
02255 uint16_t id,
02256 uint32_t ent);
02257
02275 fbTemplate_t *fbTemplateAlloc(
02276 fbInfoModel_t *model);
02277
02294 gboolean fbTemplateAppend(
02295 fbTemplate_t *tmpl,
02296 fbInfoElement_t *ex_ie,
02297 GError **err);
02298
02314 gboolean fbTemplateAppendSpec(
02315 fbTemplate_t *tmpl,
02316 fbInfoElementSpec_t *spec,
02317 uint32_t flags,
02318 GError **err);
02319
02337 gboolean fbTemplateAppendSpecArray(
02338 fbTemplate_t *tmpl,
02339 fbInfoElementSpec_t *spec,
02340 uint32_t flags,
02341 GError **err);
02342
02350 uint32_t fbTemplateCountElements(
02351 fbTemplate_t *tmpl);
02352
02362 void fbTemplateSetOptionsScope(
02363 fbTemplate_t *tmpl,
02364 uint16_t scope_count);
02365
02373 uint32_t fbTemplateGetOptionsScope(
02374 fbTemplate_t *tmpl);
02375
02387 gboolean fbTemplateContainsElement(
02388 fbTemplate_t *tmpl,
02389 const fbInfoElement_t *ex_ie);
02390
02400 gboolean fbTemplateContainsElementByName(
02401 fbTemplate_t *tmpl,
02402 fbInfoElementSpec_t *spec);
02403
02413 gboolean fbTemplateContainsAllElementsByName(
02414 fbTemplate_t *tmpl,
02415 fbInfoElementSpec_t *spec);
02416
02424 void fbTemplateFreeUnused(
02425 fbTemplate_t *tmpl);
02426
02440 fbSession_t *fbSessionAlloc(
02441 fbInfoModel_t *model);
02442
02456 void fbSessionAddTemplateCallback(
02457 fbSession_t *session,
02458 fbNewTemplateCallback_fn callback);
02459
02471 void fbSessionAddTemplatePair(
02472 fbSession_t *session,
02473 uint16_t ent_tid,
02474 uint16_t int_tid);
02475
02485 void fbSessionRemoveTemplatePair(
02486 fbSession_t *session,
02487 uint16_t ext_tid);
02488
02497 uint16_t fbSessionLookupTemplatePair(
02498 fbSession_t *session,
02499 uint16_t ext_tid);
02500
02510 void fbSessionFree(
02511 fbSession_t *session);
02512
02525 void fbSessionResetExternal(
02526 fbSession_t *session);
02527
02543 void fbSessionSetDomain(
02544 fbSession_t *session,
02545 uint32_t domain);
02546
02554 uint32_t fbSessionGetDomain(
02555 fbSession_t *session);
02556
02557 #if HAVE_SPREAD
02558
02579 gboolean fbSessionAddTemplatesMulticast(
02580 fbSession_t *session,
02581 char **groups,
02582 gboolean internal,
02583 uint16_t tid,
02584 fbTemplate_t *tmpl,
02585 GError **err);
02586
02587 #endif
02588
02601 gboolean fbSessionExportTemplate(
02602 fbSession_t *session,
02603 uint16_t tid,
02604 GError **err);
02605
02617 gboolean fbSessionExportTemplates(
02618 fbSession_t *session,
02619 GError **err);
02620
02636 uint16_t fbSessionAddTemplate(
02637 fbSession_t *session,
02638 gboolean internal,
02639 uint16_t tid,
02640 fbTemplate_t *tmpl,
02641 GError **err);
02642
02655 gboolean fbSessionRemoveTemplate(
02656 fbSession_t *session,
02657 gboolean internal,
02658 uint16_t tid,
02659 GError **err);
02660
02672 fbTemplate_t *fbSessionGetTemplate(
02673 fbSession_t *session,
02674 gboolean internal,
02675 uint16_t tid,
02676 GError **err);
02677
02690 fbExporter_t *fbExporterAllocNet(
02691 fbConnSpec_t *spec);
02692
02693 #if HAVE_SPREAD
02694
02705 int fbCollectorGetSpreadReturnGroups(
02706 fbCollector_t *collector,
02707 char *groups[]);
02708
02722 fbExporter_t *fbExporterAllocSpread(
02723 fbSpreadParams_t *params );
02724
02725 #endif
02726
02738 fbExporter_t *fbExporterAllocFile(
02739 const char *path);
02740
02749 fbExporter_t *fbExporterAllocFP(
02750 FILE *fp);
02751
02764 void fbExporterSetStream(
02765 fbExporter_t *exporter,
02766 int sctp_stream);
02767
02780 void fbExporterAutoStream(
02781 fbExporter_t *exporter);
02782
02790 void fbExporterClose(
02791 fbExporter_t *exporter);
02792
02805 fbCollector_t *fbCollectorAllocFile(
02806 void *ctx,
02807 const char *path,
02808 GError **err);
02809
02820 fbCollector_t *fbCollectorAllocFP(
02821 void *ctx,
02822 FILE *fp);
02823
02824
02825 #ifdef HAVE_SPREAD
02826
02836 fbCollector_t *fbCollectorAllocSpread (
02837 void *ctx,
02838 fbSpreadParams_t *params,
02839 GError **err );
02840
02841 #endif
02842
02853 void *fbCollectorGetContext(
02854 fbCollector_t *collector);
02855
02866 void fbCollectorClose(
02867 fbCollector_t *collector);
02868
02869
02870
02896 fbListener_t *fbListenerAlloc(
02897 fbConnSpec_t *spec,
02898 fbSession_t *session,
02899 fbListenerAppInit_fn appinit,
02900 fbListenerAppFree_fn appfree,
02901 GError **err);
02902
02910 void fbListenerFree(
02911 fbListener_t *listener);
02912
02934 fBuf_t *fbListenerWait(
02935 fbListener_t *listener,
02936 GError **err);
02937
02948 fBuf_t *fbListenerWaitNoCollectors(
02949 fbListener_t *listener,
02950 GError **err);
02958 void fbListenerInterrupt(
02959 fbListener_t *listener);
02960
02961
02977 gboolean fbListenerGetCollector(
02978 fbListener_t *listener,
02979 fbCollector_t **collector,
02980 GError **err);
02981
02982
02983
02984
03000 gboolean fbCollectorClearTranslator(
03001 fbCollector_t *collector,
03002 GError **err);
03003
03004
03020 gboolean fbCollectorSetNetflowV9Translator(
03021 fbCollector_t *collector,
03022 GError **err);
03023
03030 struct sockaddr* fbCollectorGetPeer(
03031 fbCollector_t *collector);
03032
03033
03034
03035 #ifdef __cplusplus
03036 }
03037 #endif
03038
03039 #endif