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
00509 #ifndef _FB_PUBLIC_H_
00510 #define _FB_PUBLIC_H_
00511 #include <fixbuf/autoinc.h>
00512
00513 #ifdef __cplusplus
00514 extern "C" {
00515 #endif
00516
00517 #ident "$Id: public.h 18532 2012-09-06 15:10:01Z ecoff_svn $"
00518
00519
00520
00521
00522
00524 #define FB_ERROR_DOMAIN g_quark_from_string("fixbufError")
00525
00526 #define FB_ERROR_TMPL 1
00527
00531 #define FB_ERROR_EOM 2
00532
00537 #define FB_ERROR_EOF 3
00538
00542 #define FB_ERROR_IPFIX 4
00543
00548 #define FB_ERROR_BUFSZ 5
00549
00550 #define FB_ERROR_IMPL 6
00551
00552 #define FB_ERROR_IO 7
00553
00557 #define FB_ERROR_NLREAD 8
00558
00563 #define FB_ERROR_NLWRITE 9
00564
00567 #define FB_ERROR_NOELEMENT 10
00568
00571 #define FB_ERROR_CONN 11
00572
00576 #define FB_ERROR_NETFLOWV9 12
00577
00580 #define FB_ERROR_TRANSMISC 13
00581
00582
00583
00584
00585
00586 struct fBuf_st;
00592 typedef struct fBuf_st fBuf_t;
00593
00600 typedef struct fbVarfield_st {
00602 size_t len;
00609 uint8_t *buf;
00610 } fbVarfield_t;
00611
00612
00613 struct fbInfoModel_st;
00618 typedef struct fbInfoModel_st fbInfoModel_t;
00619
00625 #define FB_IE_INIT(_name_, _ent_, _num_, _len_, _flags_) \
00626 { {.name = _name_}, 0, _ent_, _num_, _len_, _flags_ }
00627
00633 #define FB_IE_NULL \
00634 { {.name = NULL}, 0, 0, 0, 0, 0 }
00635
00640 #define FB_IE_F_NONE 0x00000000
00641
00646 #define FB_IE_F_ENDIAN 0x00000001
00647
00657 #define FB_IE_F_REVERSIBLE 0x00000040
00658
00666 #define FB_IE_F_ALIEN 0x00000080
00667
00671 #define FB_IE_VARLEN 65535
00672
00677 #define FB_IE_BASIC_LIST 291
00678
00682 #define FB_IE_SUBTEMPLATE_LIST 292
00683
00687 #define FB_IE_SUBTEMPLATE_MULTILIST 293
00688
00696 #define FB_IE_PEN_REVERSE 29305
00697
00706 #define FB_IE_VENDOR_BIT_REVERSE 0x4000
00707
00713 #define FB_CISCO_GENERIC 9999
00714
00721 #define FB_CISCO_ASA_EVENT_ID 9998
00722
00729 #define FB_CISCO_ASA_EVENT_XTRA 9997
00730
00735 #define FB_IE_REVERSE_STR "reverse"
00736
00738 #define FB_IE_REVERSE_STRLEN 7
00739
00748 typedef struct fbInfoElement_st {
00750 union {
00756 const struct fbInfoElement_st *canon;
00761 char *name;
00762 } ref;
00763
00769 uint32_t midx;
00771 uint32_t ent;
00776 uint16_t num;
00778 uint16_t len;
00780 uint32_t flags;
00781 } fbInfoElement_t;
00782
00787 #define FB_TID_AUTO 0
00788
00792 #define FB_TID_TS 2
00793
00797 #define FB_TID_OTS 3
00798
00802 #define FB_TID_MIN_DATA 256
00803
00804 struct fbTemplate_st;
00810 typedef struct fbTemplate_st fbTemplate_t;
00811
00817 #define FB_IESPEC_NULL { NULL, 0, 0 }
00818
00824 typedef struct fbInfoElementSpec_st {
00826 char *name;
00831 uint16_t len_override;
00838 uint32_t flags;
00839 } fbInfoElementSpec_t;
00840
00841 struct fbSession_st;
00848 typedef struct fbSession_st fbSession_t;
00849
00851 typedef enum fbTransport_en {
00856 FB_SCTP,
00858 FB_TCP,
00860 FB_UDP,
00866 FB_DTLS_SCTP,
00871 FB_TLS_TCP,
00877 FB_DTLS_UDP,
00878 } fbTransport_t;
00879
00884 typedef struct fbConnSpec_st {
00886 fbTransport_t transport;
00888 char *host;
00890 char *svc;
00892 char *ssl_ca_file;
00894 char *ssl_cert_file;
00896 char *ssl_key_file;
00898 char *ssl_key_pass;
00903 void *vai;
00908 void *vssl_ctx;
00909 } fbConnSpec_t;
00910
00914 #define FB_CONNSPEC_INIT { FB_SCTP, NULL, NULL, \
00915 NULL, NULL, NULL, NULL, \
00916 NULL, NULL }
00917
00918 #if HAVE_SPREAD
00919
00924 #define FB_SPREADPARAMS_INIT { 0, 0, 0 }
00925
00926 typedef struct fbSpreadParams_st {
00929 fbSession_t * session;
00932 char * daemon;
00935 char ** groups;
00936 } fbSpreadParams_t;
00937
00938 #endif
00939
00940 struct fbExporter_st;
00946 typedef struct fbExporter_st fbExporter_t;
00947
00948 struct fbCollector_st;
00956 typedef struct fbCollector_st fbCollector_t;
00957
00958 struct fbListener_st;
00965 typedef struct fbListener_st fbListener_t;
00966
00970 typedef struct fbListenerEntry_st fbListenerEntry_t;
00971
00975 struct fbListenerEntry_st
00976 {
00978 fbListenerEntry_t *next;
00980 fbListenerEntry_t *prev;
00982 fbListener_t *listener;
00983 };
00984
00988 typedef struct fbListenerGroupResult_st fbListenerGroupResult_t;
00989
00995 struct fbListenerGroupResult_st
00996 {
00998 fbListenerGroupResult_t *next;
01000 fbListener_t *listener;
01002 fBuf_t *fbuf;
01003 };
01004
01008 typedef struct fbListenerGroup_st
01009 {
01011 fbListenerEntry_t *head;
01013 void *tableForDescriptorsToListeners;
01014 } fbListenerGroup_t;
01015
01028 typedef gboolean (*fbAcceptCallback_fn) (
01029 fBuf_t *buf,
01030 fbListener_t *listener,
01031 struct sockaddr *sAddr,
01032 GError **err);
01033
01044 typedef void (*fbNewTemplateCallback_fn) (
01045 fbSession_t *session,
01046 uint16_t tid,
01047 fbTemplate_t *tmpl);
01048
01052 #define UNDEFINED 0xFF
01053
01056 #define NONE_OF 0x00
01057
01060 #define EXACTLY_ONE_OF 0x01
01061
01064 #define ONE_OR_MORE_OF 0x02
01065
01068 #define ALL_OF 0x03
01069
01072 #define ORDERED 0x04
01073
01080 gboolean fbListValidSemantic(
01081 uint8_t semantic);
01082
01083
01089 typedef struct fbBasicList_st {
01091 uint8_t semantic;
01093 uint16_t numElements;
01095 uint16_t dataLength;
01097 const fbInfoElement_t *infoElement;
01099 uint8_t *dataPtr;
01100 } fbBasicList_t;
01101
01102
01108 fbBasicList_t* fbBasicListAlloc(
01109 void);
01110
01123 void* fbBasicListInit(
01124 fbBasicList_t *basicListPtr,
01125 uint8_t semantic,
01126 const fbInfoElement_t *infoElement,
01127 uint16_t numElements);
01128
01143 void* fbBasicListInitWithOwnBuffer(
01144 fbBasicList_t *basicListPtr,
01145 uint8_t semantic,
01146 const fbInfoElement_t *infoElement,
01147 uint16_t numElements,
01148 uint16_t dataLength,
01149 uint8_t *dataPtr);
01150
01163 void fbBasicListCollectorInit(
01164 fbBasicList_t *basicListPtr);
01165
01166
01174 uint8_t fbBasicListGetSemantic(
01175 fbBasicList_t *basicListPtr);
01176
01185 void fbBasicListSetSemantic(
01186 fbBasicList_t *basicListPtr,
01187 uint8_t semantic);
01188
01189
01197 const fbInfoElement_t* fbBasicListGetInfoElement(
01198 fbBasicList_t *basicListPtr);
01199
01205 void* fbBasicListGetDataPtr(
01206 fbBasicList_t *basicListPtr);
01207
01216 void* fbBasicListGetIndexedDataPtr(
01217 fbBasicList_t *basicListPtr,
01218 uint16_t index);
01219
01228 void* fbBasicListGetNextPtr(
01229 fbBasicList_t *basicListPtr,
01230 void *currentPtr);
01231
01241 void* fbBasicListRealloc(
01242 fbBasicList_t *basicList,
01243 uint16_t newNumElements);
01244
01252 void* fbBasicListAddNewElements(
01253 fbBasicList_t *basicList,
01254 uint16_t numNewElements);
01255
01261 void fbBasicListClear(
01262 fbBasicList_t *basicListPtr);
01263
01270 void fbBasicListClearWithoutFree(
01271 fbBasicList_t *basicList);
01272
01278 void fbBasicListFree(
01279 fbBasicList_t *basicListPtr);
01280
01281
01282
01283
01284
01285
01286
01294 typedef struct fbSubTemplateList_st {
01296 uint8_t semantic;
01298 uint16_t tmplID;
01300 uint16_t numElements;
01302 const fbTemplate_t *tmpl;
01305 union {
01306 size_t length;
01307 uint64_t extra;
01308 } dataLength;
01310 uint8_t *dataPtr;
01311 } fbSubTemplateList_t;
01312
01319 fbSubTemplateList_t* fbSubTemplateListAlloc(
01320 void);
01321
01334 void* fbSubTemplateListInit(
01335 fbSubTemplateList_t *sTL,
01336 uint8_t semantic,
01337 uint16_t tmplID,
01338 const fbTemplate_t *tmpl,
01339 uint16_t numElements);
01340
01355 void* fbSubTemplateListInitWithOwnBuffer(
01356 fbSubTemplateList_t *subTemplateList,
01357 uint8_t semantic,
01358 uint16_t tmplID,
01359 const fbTemplate_t *tmpl,
01360 uint16_t numElements,
01361 uint16_t dataLength,
01362 uint8_t *dataPtr);
01363
01374 void fbSubTemplateListCollectorInit(
01375 fbSubTemplateList_t *STL);
01376
01382 void* fbSubTemplateListGetDataPtr(
01383 const fbSubTemplateList_t *subTemplateListPtr);
01384
01392 void* fbSubTemplateListGetIndexedDataPtr(
01393 const fbSubTemplateList_t *subTemplateListPtr,
01394 uint16_t index);
01395
01407 void* fbSubTemplateListGetNextPtr(
01408 const fbSubTemplateList_t *subTemplateListPtr,
01409 void *currentPtr);
01410
01417 void fbSubTemplateListSetSemantic(
01418 fbSubTemplateList_t *subTemplateListPtr,
01419 uint8_t semantic);
01420
01426 uint8_t fbSubTemplateListGetSemantic(
01427 fbSubTemplateList_t *subTemplateListPtr);
01428
01434 const fbTemplate_t* fbSubTemplateListGetTemplate(
01435 fbSubTemplateList_t *subTemplateListPtr);
01436
01442 uint16_t fbSubTemplateListGetTemplateID(
01443 fbSubTemplateList_t *subTemplateListPtr);
01444
01455 void* fbSubTemplateListRealloc(
01456 fbSubTemplateList_t *subTemplateList,
01457 uint16_t newNumElements);
01458
01467 void* fbSubTemplateListAddNewElements(
01468 fbSubTemplateList_t *subTemplateList,
01469 uint16_t numNewElements);
01470
01484 void fbSubTemplateListClear(
01485 fbSubTemplateList_t *subTemplateListPtr);
01486
01495 void fbSubTemplateListClearWithoutFree(
01496 fbSubTemplateList_t *subTemplateListPtr);
01497
01505 void fbSubTemplateListFree(
01506 fbSubTemplateList_t *subTemplateListPtr);
01507
01508
01526 typedef struct fbSubTemplateMultiListEntry_st {
01528 uint16_t tmplID;
01530 uint16_t numElements;
01532 fbTemplate_t *tmpl;
01534 size_t dataLength;
01536 uint8_t *dataPtr;
01537 } fbSubTemplateMultiListEntry_t;
01538
01543 typedef struct fbSubTemplateMultiList_st {
01545 uint8_t semantic;
01547 uint16_t numElements;
01549 fbSubTemplateMultiListEntry_t *firstEntry;
01550 } fbSubTemplateMultiList_t;
01551
01561 fbSubTemplateMultiListEntry_t* fbSubTemplateMultiListInit(
01562 fbSubTemplateMultiList_t *STML,
01563 uint8_t semantic,
01564 uint16_t numElements);
01565
01572 void fbSubTemplateMultiListSetSemantic(
01573 fbSubTemplateMultiList_t *STML,
01574 uint8_t semantic);
01575
01581 uint8_t fbSubTemplateMultiListGetSemantic(
01582 fbSubTemplateMultiList_t *STML);
01583
01590 void fbSubTemplateMultiListClear(
01591 fbSubTemplateMultiList_t *STML);
01592
01602 void fbSubTemplateMultiListClearEntries(
01603 fbSubTemplateMultiList_t *STML);
01604
01610 void fbSubTemplateMultiListFree(
01611 fbSubTemplateMultiList_t *STML);
01612
01622 fbSubTemplateMultiListEntry_t* fbSubTemplateMultiListRealloc(
01623 fbSubTemplateMultiList_t *STML,
01624 uint16_t newNumEntries);
01625
01634 fbSubTemplateMultiListEntry_t* fbSubTemplateMultiListAddNewEntries(
01635 fbSubTemplateMultiList_t *STML,
01636 uint16_t numNewEntries);
01637
01643 fbSubTemplateMultiListEntry_t* fbSubTemplateMultiListGetFirstEntry(
01644 fbSubTemplateMultiList_t *STML);
01645
01653 fbSubTemplateMultiListEntry_t* fbSubTemplateMultiListGetIndexedEntry(
01654 fbSubTemplateMultiList_t *STML,
01655 uint16_t index);
01656
01668 fbSubTemplateMultiListEntry_t* fbSubTemplateMultiListGetNextEntry(
01669 fbSubTemplateMultiList_t *STML,
01670 fbSubTemplateMultiListEntry_t *currentEntry);
01671
01683 void* fbSubTemplateMultiListEntryInit(
01684 fbSubTemplateMultiListEntry_t *entry,
01685 uint16_t tmplID,
01686 fbTemplate_t *tmpl,
01687 uint16_t numElements);
01688
01699 void *fbSubTemplateMultiListEntryRealloc(
01700 fbSubTemplateMultiListEntry_t *entry,
01701 uint16_t newNumElements);
01702
01709 void fbSubTemplateMultiListEntryClear(
01710 fbSubTemplateMultiListEntry_t *entry);
01711
01718 void* fbSubTemplateMultiListEntryGetDataPtr(
01719 fbSubTemplateMultiListEntry_t *entry);
01720
01732 void* fbSubTemplateMultiListEntryNextDataPtr(
01733 fbSubTemplateMultiListEntry_t *entry,
01734 void *currentPtr);
01735
01746 void* fbSubTemplateMultiListEntryGetIndexedPtr(
01747 fbSubTemplateMultiListEntry_t *entry,
01748 uint16_t index);
01749
01756 const fbTemplate_t* fbSubTemplateMultiListEntryGetTemplate(
01757 fbSubTemplateMultiListEntry_t *entry);
01758
01765 uint16_t fbSubTemplateMultiListEntryGetTemplateID(
01766 fbSubTemplateMultiListEntry_t *entry);
01767
01768
01769
01775 fbListenerGroup_t* fbListenerGroupAlloc(
01776 void);
01777
01787 int fbListenerGroupAddListener(
01788 fbListenerGroup_t *group,
01789 const fbListener_t *listener);
01790
01800 int fbListenerGroupDeleteListener(
01801 fbListenerGroup_t *group,
01802 const fbListener_t *listener);
01803
01814 fbListenerGroupResult_t* fbListenerGroupWait(
01815 fbListenerGroup_t *group,
01816 GError **err);
01817
01828 gboolean fbListenerWaitAcceptCallback(
01829 fbListener_t *listener,
01830 fbAcceptCallback_fn callback,
01831 GError **err);
01832
01845 gboolean fbListenerGroupWaitAcceptCallback(
01846 fbListenerGroup_t *group,
01847 fbAcceptCallback_fn callback,
01848 GError **err);
01849
01862 fBuf_t *fbListenerOwnSocketCollectorTCP(
01863 fbListener_t *listener,
01864 int sock,
01865 GError **err);
01866
01876 fBuf_t *fbListenerOwnSocketCollectorTLS(
01877 fbListener_t *listener,
01878 int sock,
01879 GError **err);
01880
01886 void fBufInterruptSocket(
01887 fBuf_t *fbuf);
01888
01889
01910 typedef gboolean (*fbListenerAppInit_fn) (
01911 fbListener_t *listener,
01912 void **ctx,
01913 int fd,
01914 struct sockaddr *peer,
01915 size_t peerlen,
01916 GError **err);
01917
01925 typedef void (*fbListenerAppFree_fn) (
01926 void *ctx);
01927
01928
01929
01930
01931
01932
01933
01950 gboolean fBufSetInternalTemplate(
01951 fBuf_t *fbuf,
01952 uint16_t int_tid,
01953 GError **err);
01954
01972 gboolean fBufSetExportTemplate(
01973 fBuf_t *fbuf,
01974 uint16_t ext_tid,
01975 GError **err);
01976
01977 #if HAVE_SPREAD
01978
01995 void fBufSetSpreadExportGroup(
01996 fBuf_t *fbuf,
01997 char **groups,
01998 int num_groups,
01999 GError **err);
02000 #endif
02001
02016 void fBufSetAutomaticMode(
02017 fBuf_t *fbuf,
02018 gboolean automatic);
02019
02027 fbSession_t *fBufGetSession(
02028 fBuf_t *fbuf);
02029
02038 void fBufFree(
02039 fBuf_t *fbuf);
02040
02053 fBuf_t *fBufAllocForExport(
02054 fbSession_t *session,
02055 fbExporter_t *exporter);
02056
02066 fbExporter_t *fBufGetExporter(
02067 fBuf_t *fbuf);
02068
02079 void fBufSetExporter(
02080 fBuf_t *fbuf,
02081 fbExporter_t *exporter);
02082
02083
02107 gboolean fBufAppend(
02108 fBuf_t *fbuf,
02109 uint8_t *recbase,
02110 size_t recsize,
02111 GError **err);
02112
02122 gboolean fBufEmit(
02123 fBuf_t *fbuf,
02124 GError **err);
02125
02137 void fBufSetExportTime(
02138 fBuf_t *fbuf,
02139 uint32_t extime);
02140
02153 fBuf_t *fBufAllocForCollection(
02154 fbSession_t *session,
02155 fbCollector_t *collector);
02156
02166 fbCollector_t *fBufGetCollector(
02167 fBuf_t *fbuf);
02168
02179 void fBufSetCollector(
02180 fBuf_t *fbuf,
02181 fbCollector_t *collector);
02182
02212 gboolean fBufNext(
02213 fBuf_t *fbuf,
02214 uint8_t *recbase,
02215 size_t *recsize,
02216 GError **err);
02217
02231 gboolean fBufNextMessage(
02232 fBuf_t *fbuf,
02233 GError **err);
02234
02242 uint32_t fBufGetExportTime(
02243 fBuf_t *fbuf);
02244
02264 fbTemplate_t *fBufGetCollectionTemplate(
02265 fBuf_t *fbuf,
02266 uint16_t *ext_tid);
02267
02286 fbTemplate_t *fBufNextCollectionTemplate(
02287 fBuf_t *fbuf,
02288 uint16_t *ext_tid,
02289 GError **err);
02290
02302 fbInfoModel_t *fbInfoModelAlloc(void);
02303
02312 void fbInfoModelFree(
02313 fbInfoModel_t *model);
02314
02329 void fbInfoModelAddElement(
02330 fbInfoModel_t *model,
02331 fbInfoElement_t *ie);
02332
02347 void fbInfoModelAddElementArray(
02348 fbInfoModel_t *model,
02349 fbInfoElement_t *ie);
02350
02362 const fbInfoElement_t *fbInfoModelGetElementByName(
02363 fbInfoModel_t *model,
02364 const char *name);
02365
02378 const fbInfoElement_t *fbInfoModelGetElementByID(
02379 fbInfoModel_t *model,
02380 uint16_t id,
02381 uint32_t ent);
02382
02400 fbTemplate_t *fbTemplateAlloc(
02401 fbInfoModel_t *model);
02402
02419 gboolean fbTemplateAppend(
02420 fbTemplate_t *tmpl,
02421 fbInfoElement_t *ex_ie,
02422 GError **err);
02423
02439 gboolean fbTemplateAppendSpec(
02440 fbTemplate_t *tmpl,
02441 fbInfoElementSpec_t *spec,
02442 uint32_t flags,
02443 GError **err);
02444
02462 gboolean fbTemplateAppendSpecArray(
02463 fbTemplate_t *tmpl,
02464 fbInfoElementSpec_t *spec,
02465 uint32_t flags,
02466 GError **err);
02467
02475 uint32_t fbTemplateCountElements(
02476 fbTemplate_t *tmpl);
02477
02487 void fbTemplateSetOptionsScope(
02488 fbTemplate_t *tmpl,
02489 uint16_t scope_count);
02490
02498 uint32_t fbTemplateGetOptionsScope(
02499 fbTemplate_t *tmpl);
02500
02512 gboolean fbTemplateContainsElement(
02513 fbTemplate_t *tmpl,
02514 const fbInfoElement_t *ex_ie);
02515
02525 gboolean fbTemplateContainsElementByName(
02526 fbTemplate_t *tmpl,
02527 fbInfoElementSpec_t *spec);
02528
02538 gboolean fbTemplateContainsAllElementsByName(
02539 fbTemplate_t *tmpl,
02540 fbInfoElementSpec_t *spec);
02541
02549 void fbTemplateFreeUnused(
02550 fbTemplate_t *tmpl);
02551
02565 fbSession_t *fbSessionAlloc(
02566 fbInfoModel_t *model);
02567
02581 void fbSessionAddTemplateCallback(
02582 fbSession_t *session,
02583 fbNewTemplateCallback_fn callback);
02584
02596 void fbSessionAddTemplatePair(
02597 fbSession_t *session,
02598 uint16_t ent_tid,
02599 uint16_t int_tid);
02600
02610 void fbSessionRemoveTemplatePair(
02611 fbSession_t *session,
02612 uint16_t ext_tid);
02613
02622 uint16_t fbSessionLookupTemplatePair(
02623 fbSession_t *session,
02624 uint16_t ext_tid);
02625
02635 void fbSessionFree(
02636 fbSession_t *session);
02637
02650 void fbSessionResetExternal(
02651 fbSession_t *session);
02652
02668 void fbSessionSetDomain(
02669 fbSession_t *session,
02670 uint32_t domain);
02671
02679 uint32_t fbSessionGetDomain(
02680 fbSession_t *session);
02681
02682 #if HAVE_SPREAD
02683
02704 gboolean fbSessionAddTemplatesMulticast(
02705 fbSession_t *session,
02706 char **groups,
02707 gboolean internal,
02708 uint16_t tid,
02709 fbTemplate_t *tmpl,
02710 GError **err);
02711
02712 #endif
02713
02726 gboolean fbSessionExportTemplate(
02727 fbSession_t *session,
02728 uint16_t tid,
02729 GError **err);
02730
02742 gboolean fbSessionExportTemplates(
02743 fbSession_t *session,
02744 GError **err);
02745
02761 uint16_t fbSessionAddTemplate(
02762 fbSession_t *session,
02763 gboolean internal,
02764 uint16_t tid,
02765 fbTemplate_t *tmpl,
02766 GError **err);
02767
02780 gboolean fbSessionRemoveTemplate(
02781 fbSession_t *session,
02782 gboolean internal,
02783 uint16_t tid,
02784 GError **err);
02785
02797 fbTemplate_t *fbSessionGetTemplate(
02798 fbSession_t *session,
02799 gboolean internal,
02800 uint16_t tid,
02801 GError **err);
02802
02815 fbExporter_t *fbExporterAllocNet(
02816 fbConnSpec_t *spec);
02817
02818 #if HAVE_SPREAD
02819
02830 int fbCollectorGetSpreadReturnGroups(
02831 fbCollector_t *collector,
02832 char *groups[]);
02833
02847 fbExporter_t *fbExporterAllocSpread(
02848 fbSpreadParams_t *params );
02849
02850 #endif
02851
02863 fbExporter_t *fbExporterAllocFile(
02864 const char *path);
02865
02874 fbExporter_t *fbExporterAllocFP(
02875 FILE *fp);
02876
02889 void fbExporterSetStream(
02890 fbExporter_t *exporter,
02891 int sctp_stream);
02892
02905 void fbExporterAutoStream(
02906 fbExporter_t *exporter);
02907
02915 void fbExporterClose(
02916 fbExporter_t *exporter);
02917
02930 fbCollector_t *fbCollectorAllocFile(
02931 void *ctx,
02932 const char *path,
02933 GError **err);
02934
02945 fbCollector_t *fbCollectorAllocFP(
02946 void *ctx,
02947 FILE *fp);
02948
02949
02950 #ifdef HAVE_SPREAD
02951
02961 fbCollector_t *fbCollectorAllocSpread (
02962 void *ctx,
02963 fbSpreadParams_t *params,
02964 GError **err );
02965
02966 #endif
02967
02978 void *fbCollectorGetContext(
02979 fbCollector_t *collector);
02980
02991 void fbCollectorClose(
02992 fbCollector_t *collector);
02993
02994
03006 void fbCollectorSetAcceptOnly(
03007 fbCollector_t *collector,
03008 struct sockaddr *address,
03009 size_t address_length);
03010
03036 fbListener_t *fbListenerAlloc(
03037 fbConnSpec_t *spec,
03038 fbSession_t *session,
03039 fbListenerAppInit_fn appinit,
03040 fbListenerAppFree_fn appfree,
03041 GError **err);
03042
03050 void fbListenerFree(
03051 fbListener_t *listener);
03052
03074 fBuf_t *fbListenerWait(
03075 fbListener_t *listener,
03076 GError **err);
03077
03088 fBuf_t *fbListenerWaitNoCollectors(
03089 fbListener_t *listener,
03090 GError **err);
03091
03099 void fbListenerInterrupt(
03100 fbListener_t *listener);
03101
03102
03118 gboolean fbListenerGetCollector(
03119 fbListener_t *listener,
03120 fbCollector_t **collector,
03121 GError **err);
03122
03123
03124
03125
03141 gboolean fbCollectorClearTranslator(
03142 fbCollector_t *collector,
03143 GError **err);
03144
03145
03161 gboolean fbCollectorSetNetflowV9Translator(
03162 fbCollector_t *collector,
03163 GError **err);
03164
03171 struct sockaddr* fbCollectorGetPeer(
03172 fbCollector_t *collector);
03173
03180 uint32_t fbCollectorGetObservationDomain(
03181 fbCollector_t *collector);
03182
03195 void fbCollectorSetUDPMultiSession(
03196 fbCollector_t *collector,
03197 gboolean multi_session);
03198
03213 void fbCollectorManageUDPStreamByPort(
03214 fbCollector_t *collector,
03215 gboolean manage_port);
03216
03217 #ifdef __cplusplus
03218 }
03219 #endif
03220
03221 #endif