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
00528 #ifndef _FB_PUBLIC_H_
00529 #define _FB_PUBLIC_H_
00530 #include <fixbuf/autoinc.h>
00531
00532 #ifdef __cplusplus
00533 extern "C" {
00534 #endif
00535
00536 #ident "$Id: public.h 18744 2013-03-07 17:48:39Z ecoff_svn $"
00537
00538
00539
00540
00541
00543 #define FB_ERROR_DOMAIN g_quark_from_string("fixbufError")
00544
00545 #define FB_ERROR_TMPL 1
00546
00550 #define FB_ERROR_EOM 2
00551
00556 #define FB_ERROR_EOF 3
00557
00561 #define FB_ERROR_IPFIX 4
00562
00567 #define FB_ERROR_BUFSZ 5
00568
00569 #define FB_ERROR_IMPL 6
00570
00571 #define FB_ERROR_IO 7
00572
00576 #define FB_ERROR_NLREAD 8
00577
00582 #define FB_ERROR_NLWRITE 9
00583
00586 #define FB_ERROR_NOELEMENT 10
00587
00590 #define FB_ERROR_CONN 11
00591
00595 #define FB_ERROR_NETFLOWV9 12
00596
00599 #define FB_ERROR_TRANSMISC 13
00600
00601
00602
00603
00604
00605 struct fBuf_st;
00611 typedef struct fBuf_st fBuf_t;
00612
00619 typedef struct fbVarfield_st {
00621 size_t len;
00628 uint8_t *buf;
00629 } fbVarfield_t;
00630
00631
00632 struct fbInfoModel_st;
00637 typedef struct fbInfoModel_st fbInfoModel_t;
00638
00644 #define FB_IE_INIT(_name_, _ent_, _num_, _len_, _flags_) \
00645 {{(const struct fbInfoElement_st*)_name_}, 0, _ent_, _num_, _len_, _flags_}
00646
00652 #define FB_IE_NULL FB_IE_INIT(NULL, 0, 0, 0, 0)
00653
00658 #define FB_IE_F_NONE 0x00000000
00659
00664 #define FB_IE_F_ENDIAN 0x00000001
00665
00675 #define FB_IE_F_REVERSIBLE 0x00000040
00676
00684 #define FB_IE_F_ALIEN 0x00000080
00685
00689 #define FB_IE_VARLEN 65535
00690
00695 #define FB_IE_BASIC_LIST 291
00696
00700 #define FB_IE_SUBTEMPLATE_LIST 292
00701
00705 #define FB_IE_SUBTEMPLATE_MULTILIST 293
00706
00714 #define FB_IE_PEN_REVERSE 29305
00715
00724 #define FB_IE_VENDOR_BIT_REVERSE 0x4000
00725
00731 #define FB_CISCO_GENERIC 9999
00732
00739 #define FB_CISCO_ASA_EVENT_ID 9998
00740
00747 #define FB_CISCO_ASA_EVENT_XTRA 9997
00748
00753 #define FB_IE_REVERSE_STR "reverse"
00754
00756 #define FB_IE_REVERSE_STRLEN 7
00757
00766 typedef struct fbInfoElement_st {
00768 union {
00774 const struct fbInfoElement_st *canon;
00779 const char *name;
00780 } ref;
00781
00787 uint32_t midx;
00789 uint32_t ent;
00794 uint16_t num;
00796 uint16_t len;
00798 uint32_t flags;
00799 } fbInfoElement_t;
00800
00805 #define FB_TID_AUTO 0
00806
00810 #define FB_TID_TS 2
00811
00815 #define FB_TID_OTS 3
00816
00820 #define FB_TID_MIN_DATA 256
00821
00822 struct fbTemplate_st;
00828 typedef struct fbTemplate_st fbTemplate_t;
00829
00835 #define FB_IESPEC_NULL { NULL, 0, 0 }
00836
00842 typedef struct fbInfoElementSpec_st {
00844 char *name;
00849 uint16_t len_override;
00856 uint32_t flags;
00857 } fbInfoElementSpec_t;
00858
00859 struct fbSession_st;
00866 typedef struct fbSession_st fbSession_t;
00867
00869 typedef enum fbTransport_en {
00874 FB_SCTP,
00876 FB_TCP,
00878 FB_UDP,
00884 FB_DTLS_SCTP,
00889 FB_TLS_TCP,
00895 FB_DTLS_UDP,
00896 } fbTransport_t;
00897
00902 typedef struct fbConnSpec_st {
00904 fbTransport_t transport;
00906 char *host;
00908 char *svc;
00910 char *ssl_ca_file;
00912 char *ssl_cert_file;
00914 char *ssl_key_file;
00916 char *ssl_key_pass;
00921 void *vai;
00926 void *vssl_ctx;
00927 } fbConnSpec_t;
00928
00932 #define FB_CONNSPEC_INIT { FB_SCTP, NULL, NULL, \
00933 NULL, NULL, NULL, NULL, \
00934 NULL, NULL }
00935
00936 #if HAVE_SPREAD
00937
00942 #define FB_SPREADPARAMS_INIT { 0, 0, 0 }
00943
00944 typedef struct fbSpreadParams_st {
00947 fbSession_t * session;
00950 char * daemon;
00953 char ** groups;
00954 } fbSpreadParams_t;
00955
00956 #endif
00957
00958 struct fbExporter_st;
00964 typedef struct fbExporter_st fbExporter_t;
00965
00966 struct fbCollector_st;
00974 typedef struct fbCollector_st fbCollector_t;
00975
00976 struct fbListener_st;
00983 typedef struct fbListener_st fbListener_t;
00984
00988 typedef struct fbListenerEntry_st fbListenerEntry_t;
00989
00993 struct fbListenerEntry_st
00994 {
00996 fbListenerEntry_t *next;
00998 fbListenerEntry_t *prev;
01000 fbListener_t *listener;
01001 };
01002
01006 typedef struct fbListenerGroupResult_st fbListenerGroupResult_t;
01007
01013 struct fbListenerGroupResult_st
01014 {
01016 fbListenerGroupResult_t *next;
01018 fbListener_t *listener;
01020 fBuf_t *fbuf;
01021 };
01022
01026 typedef struct fbListenerGroup_st
01027 {
01029 fbListenerEntry_t *head;
01031 void *tableForDescriptorsToListeners;
01032 } fbListenerGroup_t;
01033
01046 typedef gboolean (*fbAcceptCallback_fn) (
01047 fBuf_t *buf,
01048 fbListener_t *listener,
01049 struct sockaddr *sAddr,
01050 GError **err);
01051
01062 typedef void (*fbNewTemplateCallback_fn) (
01063 fbSession_t *session,
01064 uint16_t tid,
01065 fbTemplate_t *tmpl);
01066
01070 #define UNDEFINED 0xFF
01071
01074 #define NONE_OF 0x00
01075
01078 #define EXACTLY_ONE_OF 0x01
01079
01082 #define ONE_OR_MORE_OF 0x02
01083
01086 #define ALL_OF 0x03
01087
01090 #define ORDERED 0x04
01091
01098 gboolean fbListValidSemantic(
01099 uint8_t semantic);
01100
01101
01107 typedef struct fbBasicList_st {
01109 const fbInfoElement_t *infoElement;
01111 uint8_t *dataPtr;
01113 uint16_t numElements;
01115 uint16_t dataLength;
01117 uint8_t semantic;
01118 } fbBasicList_t;
01119
01120
01126 fbBasicList_t* fbBasicListAlloc(
01127 void);
01128
01141 void* fbBasicListInit(
01142 fbBasicList_t *basicListPtr,
01143 uint8_t semantic,
01144 const fbInfoElement_t *infoElement,
01145 uint16_t numElements);
01146
01161 void* fbBasicListInitWithOwnBuffer(
01162 fbBasicList_t *basicListPtr,
01163 uint8_t semantic,
01164 const fbInfoElement_t *infoElement,
01165 uint16_t numElements,
01166 uint16_t dataLength,
01167 uint8_t *dataPtr);
01168
01181 void fbBasicListCollectorInit(
01182 fbBasicList_t *basicListPtr);
01183
01184
01192 uint8_t fbBasicListGetSemantic(
01193 fbBasicList_t *basicListPtr);
01194
01203 void fbBasicListSetSemantic(
01204 fbBasicList_t *basicListPtr,
01205 uint8_t semantic);
01206
01207
01215 const fbInfoElement_t* fbBasicListGetInfoElement(
01216 fbBasicList_t *basicListPtr);
01217
01223 void* fbBasicListGetDataPtr(
01224 fbBasicList_t *basicListPtr);
01225
01234 void* fbBasicListGetIndexedDataPtr(
01235 fbBasicList_t *basicListPtr,
01236 uint16_t bl_index);
01237
01246 void* fbBasicListGetNextPtr(
01247 fbBasicList_t *basicListPtr,
01248 void *currentPtr);
01249
01259 void* fbBasicListRealloc(
01260 fbBasicList_t *basicList,
01261 uint16_t newNumElements);
01262
01270 void* fbBasicListAddNewElements(
01271 fbBasicList_t *basicList,
01272 uint16_t numNewElements);
01273
01279 void fbBasicListClear(
01280 fbBasicList_t *basicListPtr);
01281
01288 void fbBasicListClearWithoutFree(
01289 fbBasicList_t *basicList);
01290
01296 void fbBasicListFree(
01297 fbBasicList_t *basicListPtr);
01298
01299
01300
01301
01302
01303
01304
01312 typedef struct fbSubTemplateList_st {
01315 union {
01316 size_t length;
01317 uint64_t extra;
01318 } dataLength;
01320 const fbTemplate_t *tmpl;
01322 uint8_t *dataPtr;
01324 uint16_t tmplID;
01326 uint16_t numElements;
01328 uint8_t semantic;
01329 } fbSubTemplateList_t;
01330
01337 fbSubTemplateList_t* fbSubTemplateListAlloc(
01338 void);
01339
01352 void* fbSubTemplateListInit(
01353 fbSubTemplateList_t *sTL,
01354 uint8_t semantic,
01355 uint16_t tmplID,
01356 const fbTemplate_t *tmpl,
01357 uint16_t numElements);
01358
01373 void* fbSubTemplateListInitWithOwnBuffer(
01374 fbSubTemplateList_t *subTemplateList,
01375 uint8_t semantic,
01376 uint16_t tmplID,
01377 const fbTemplate_t *tmpl,
01378 uint16_t numElements,
01379 uint16_t dataLength,
01380 uint8_t *dataPtr);
01381
01392 void fbSubTemplateListCollectorInit(
01393 fbSubTemplateList_t *STL);
01394
01400 void* fbSubTemplateListGetDataPtr(
01401 const fbSubTemplateList_t *subTemplateListPtr);
01402
01410 void* fbSubTemplateListGetIndexedDataPtr(
01411 const fbSubTemplateList_t *subTemplateListPtr,
01412 uint16_t index);
01413
01425 void* fbSubTemplateListGetNextPtr(
01426 const fbSubTemplateList_t *subTemplateListPtr,
01427 void *currentPtr);
01428
01435 void fbSubTemplateListSetSemantic(
01436 fbSubTemplateList_t *subTemplateListPtr,
01437 uint8_t semantic);
01438
01444 uint8_t fbSubTemplateListGetSemantic(
01445 fbSubTemplateList_t *subTemplateListPtr);
01446
01452 const fbTemplate_t* fbSubTemplateListGetTemplate(
01453 fbSubTemplateList_t *subTemplateListPtr);
01454
01460 uint16_t fbSubTemplateListGetTemplateID(
01461 fbSubTemplateList_t *subTemplateListPtr);
01462
01473 void* fbSubTemplateListRealloc(
01474 fbSubTemplateList_t *subTemplateList,
01475 uint16_t newNumElements);
01476
01485 void* fbSubTemplateListAddNewElements(
01486 fbSubTemplateList_t *subTemplateList,
01487 uint16_t numNewElements);
01488
01502 void fbSubTemplateListClear(
01503 fbSubTemplateList_t *subTemplateListPtr);
01504
01513 void fbSubTemplateListClearWithoutFree(
01514 fbSubTemplateList_t *subTemplateListPtr);
01515
01523 void fbSubTemplateListFree(
01524 fbSubTemplateList_t *subTemplateListPtr);
01525
01526
01544 typedef struct fbSubTemplateMultiListEntry_st {
01546 fbTemplate_t *tmpl;
01548 uint8_t *dataPtr;
01550 size_t dataLength;
01552 uint16_t tmplID;
01554 uint16_t numElements;
01555 } fbSubTemplateMultiListEntry_t;
01556
01561 typedef struct fbSubTemplateMultiList_st {
01563 fbSubTemplateMultiListEntry_t *firstEntry;
01565 uint16_t numElements;
01567 uint8_t semantic;
01568 } fbSubTemplateMultiList_t;
01569
01579 fbSubTemplateMultiListEntry_t* fbSubTemplateMultiListInit(
01580 fbSubTemplateMultiList_t *STML,
01581 uint8_t semantic,
01582 uint16_t numElements);
01583
01590 void fbSubTemplateMultiListSetSemantic(
01591 fbSubTemplateMultiList_t *STML,
01592 uint8_t semantic);
01593
01599 uint8_t fbSubTemplateMultiListGetSemantic(
01600 fbSubTemplateMultiList_t *STML);
01601
01608 void fbSubTemplateMultiListClear(
01609 fbSubTemplateMultiList_t *STML);
01610
01620 void fbSubTemplateMultiListClearEntries(
01621 fbSubTemplateMultiList_t *STML);
01622
01628 void fbSubTemplateMultiListFree(
01629 fbSubTemplateMultiList_t *STML);
01630
01640 fbSubTemplateMultiListEntry_t* fbSubTemplateMultiListRealloc(
01641 fbSubTemplateMultiList_t *STML,
01642 uint16_t newNumEntries);
01643
01652 fbSubTemplateMultiListEntry_t* fbSubTemplateMultiListAddNewEntries(
01653 fbSubTemplateMultiList_t *STML,
01654 uint16_t numNewEntries);
01655
01661 fbSubTemplateMultiListEntry_t* fbSubTemplateMultiListGetFirstEntry(
01662 fbSubTemplateMultiList_t *STML);
01663
01671 fbSubTemplateMultiListEntry_t* fbSubTemplateMultiListGetIndexedEntry(
01672 fbSubTemplateMultiList_t *STML,
01673 uint16_t index);
01674
01686 fbSubTemplateMultiListEntry_t* fbSubTemplateMultiListGetNextEntry(
01687 fbSubTemplateMultiList_t *STML,
01688 fbSubTemplateMultiListEntry_t *currentEntry);
01689
01701 void* fbSubTemplateMultiListEntryInit(
01702 fbSubTemplateMultiListEntry_t *entry,
01703 uint16_t tmplID,
01704 fbTemplate_t *tmpl,
01705 uint16_t numElements);
01706
01717 void *fbSubTemplateMultiListEntryRealloc(
01718 fbSubTemplateMultiListEntry_t *entry,
01719 uint16_t newNumElements);
01720
01727 void fbSubTemplateMultiListEntryClear(
01728 fbSubTemplateMultiListEntry_t *entry);
01729
01736 void* fbSubTemplateMultiListEntryGetDataPtr(
01737 fbSubTemplateMultiListEntry_t *entry);
01738
01750 void* fbSubTemplateMultiListEntryNextDataPtr(
01751 fbSubTemplateMultiListEntry_t *entry,
01752 void *currentPtr);
01753
01764 void* fbSubTemplateMultiListEntryGetIndexedPtr(
01765 fbSubTemplateMultiListEntry_t *entry,
01766 uint16_t index);
01767
01774 const fbTemplate_t* fbSubTemplateMultiListEntryGetTemplate(
01775 fbSubTemplateMultiListEntry_t *entry);
01776
01783 uint16_t fbSubTemplateMultiListEntryGetTemplateID(
01784 fbSubTemplateMultiListEntry_t *entry);
01785
01786
01787
01793 fbListenerGroup_t* fbListenerGroupAlloc(
01794 void);
01795
01805 int fbListenerGroupAddListener(
01806 fbListenerGroup_t *group,
01807 const fbListener_t *listener);
01808
01818 int fbListenerGroupDeleteListener(
01819 fbListenerGroup_t *group,
01820 const fbListener_t *listener);
01821
01832 fbListenerGroupResult_t* fbListenerGroupWait(
01833 fbListenerGroup_t *group,
01834 GError **err);
01835
01846 gboolean fbListenerWaitAcceptCallback(
01847 fbListener_t *listener,
01848 fbAcceptCallback_fn callback,
01849 GError **err);
01850
01863 gboolean fbListenerGroupWaitAcceptCallback(
01864 fbListenerGroup_t *group,
01865 fbAcceptCallback_fn callback,
01866 GError **err);
01867
01880 fBuf_t *fbListenerOwnSocketCollectorTCP(
01881 fbListener_t *listener,
01882 int sock,
01883 GError **err);
01884
01894 fBuf_t *fbListenerOwnSocketCollectorTLS(
01895 fbListener_t *listener,
01896 int sock,
01897 GError **err);
01898
01904 void fBufInterruptSocket(
01905 fBuf_t *fbuf);
01906
01907
01928 typedef gboolean (*fbListenerAppInit_fn) (
01929 fbListener_t *listener,
01930 void **ctx,
01931 int fd,
01932 struct sockaddr *peer,
01933 size_t peerlen,
01934 GError **err);
01935
01943 typedef void (*fbListenerAppFree_fn) (
01944 void *ctx);
01945
01946
01947
01948
01949
01950
01951
01968 gboolean fBufSetInternalTemplate(
01969 fBuf_t *fbuf,
01970 uint16_t int_tid,
01971 GError **err);
01972
01990 gboolean fBufSetExportTemplate(
01991 fBuf_t *fbuf,
01992 uint16_t ext_tid,
01993 GError **err);
01994
01995 #if HAVE_SPREAD
01996
02013 void fBufSetSpreadExportGroup(
02014 fBuf_t *fbuf,
02015 char **groups,
02016 int num_groups,
02017 GError **err);
02018 #endif
02019
02034 void fBufSetAutomaticMode(
02035 fBuf_t *fbuf,
02036 gboolean automatic);
02037
02045 fbSession_t *fBufGetSession(
02046 fBuf_t *fbuf);
02047
02056 void fBufFree(
02057 fBuf_t *fbuf);
02058
02071 fBuf_t *fBufAllocForExport(
02072 fbSession_t *session,
02073 fbExporter_t *exporter);
02074
02084 fbExporter_t *fBufGetExporter(
02085 fBuf_t *fbuf);
02086
02097 void fBufSetExporter(
02098 fBuf_t *fbuf,
02099 fbExporter_t *exporter);
02100
02101
02125 gboolean fBufAppend(
02126 fBuf_t *fbuf,
02127 uint8_t *recbase,
02128 size_t recsize,
02129 GError **err);
02130
02140 gboolean fBufEmit(
02141 fBuf_t *fbuf,
02142 GError **err);
02143
02155 void fBufSetExportTime(
02156 fBuf_t *fbuf,
02157 uint32_t extime);
02158
02171 fBuf_t *fBufAllocForCollection(
02172 fbSession_t *session,
02173 fbCollector_t *collector);
02174
02184 fbCollector_t *fBufGetCollector(
02185 fBuf_t *fbuf);
02186
02197 void fBufSetCollector(
02198 fBuf_t *fbuf,
02199 fbCollector_t *collector);
02200
02230 gboolean fBufNext(
02231 fBuf_t *fbuf,
02232 uint8_t *recbase,
02233 size_t *recsize,
02234 GError **err);
02235
02249 gboolean fBufNextMessage(
02250 fBuf_t *fbuf,
02251 GError **err);
02252
02260 uint32_t fBufGetExportTime(
02261 fBuf_t *fbuf);
02262
02282 fbTemplate_t *fBufGetCollectionTemplate(
02283 fBuf_t *fbuf,
02284 uint16_t *ext_tid);
02285
02304 fbTemplate_t *fBufNextCollectionTemplate(
02305 fBuf_t *fbuf,
02306 uint16_t *ext_tid,
02307 GError **err);
02308
02320 fbInfoModel_t *fbInfoModelAlloc(void);
02321
02330 void fbInfoModelFree(
02331 fbInfoModel_t *model);
02332
02347 void fbInfoModelAddElement(
02348 fbInfoModel_t *model,
02349 fbInfoElement_t *ie);
02350
02365 void fbInfoModelAddElementArray(
02366 fbInfoModel_t *model,
02367 fbInfoElement_t *ie);
02368
02380 const fbInfoElement_t *fbInfoModelGetElementByName(
02381 fbInfoModel_t *model,
02382 const char *name);
02383
02396 const fbInfoElement_t *fbInfoModelGetElementByID(
02397 fbInfoModel_t *model,
02398 uint16_t id,
02399 uint32_t ent);
02400
02418 fbTemplate_t *fbTemplateAlloc(
02419 fbInfoModel_t *model);
02420
02437 gboolean fbTemplateAppend(
02438 fbTemplate_t *tmpl,
02439 fbInfoElement_t *ex_ie,
02440 GError **err);
02441
02457 gboolean fbTemplateAppendSpec(
02458 fbTemplate_t *tmpl,
02459 fbInfoElementSpec_t *spec,
02460 uint32_t flags,
02461 GError **err);
02462
02480 gboolean fbTemplateAppendSpecArray(
02481 fbTemplate_t *tmpl,
02482 fbInfoElementSpec_t *spec,
02483 uint32_t flags,
02484 GError **err);
02485
02493 uint32_t fbTemplateCountElements(
02494 fbTemplate_t *tmpl);
02495
02505 void fbTemplateSetOptionsScope(
02506 fbTemplate_t *tmpl,
02507 uint16_t scope_count);
02508
02516 uint32_t fbTemplateGetOptionsScope(
02517 fbTemplate_t *tmpl);
02518
02530 gboolean fbTemplateContainsElement(
02531 fbTemplate_t *tmpl,
02532 const fbInfoElement_t *ex_ie);
02533
02543 gboolean fbTemplateContainsElementByName(
02544 fbTemplate_t *tmpl,
02545 fbInfoElementSpec_t *spec);
02546
02556 gboolean fbTemplateContainsAllElementsByName(
02557 fbTemplate_t *tmpl,
02558 fbInfoElementSpec_t *spec);
02559
02567 void fbTemplateFreeUnused(
02568 fbTemplate_t *tmpl);
02569
02583 fbSession_t *fbSessionAlloc(
02584 fbInfoModel_t *model);
02585
02599 void fbSessionAddTemplateCallback(
02600 fbSession_t *session,
02601 fbNewTemplateCallback_fn callback);
02602
02622 void fbSessionAddTemplatePair(
02623 fbSession_t *session,
02624 uint16_t ent_tid,
02625 uint16_t int_tid);
02626
02636 void fbSessionRemoveTemplatePair(
02637 fbSession_t *session,
02638 uint16_t ext_tid);
02639
02648 uint16_t fbSessionLookupTemplatePair(
02649 fbSession_t *session,
02650 uint16_t ext_tid);
02651
02661 void fbSessionFree(
02662 fbSession_t *session);
02663
02676 void fbSessionResetExternal(
02677 fbSession_t *session);
02678
02694 void fbSessionSetDomain(
02695 fbSession_t *session,
02696 uint32_t domain);
02697
02705 uint32_t fbSessionGetDomain(
02706 fbSession_t *session);
02707
02708 #if HAVE_SPREAD
02709
02730 gboolean fbSessionAddTemplatesMulticast(
02731 fbSession_t *session,
02732 char **groups,
02733 gboolean internal,
02734 uint16_t tid,
02735 fbTemplate_t *tmpl,
02736 GError **err);
02737
02738 #endif
02739
02752 gboolean fbSessionExportTemplate(
02753 fbSession_t *session,
02754 uint16_t tid,
02755 GError **err);
02756
02768 gboolean fbSessionExportTemplates(
02769 fbSession_t *session,
02770 GError **err);
02771
02790 uint16_t fbSessionAddTemplate(
02791 fbSession_t *session,
02792 gboolean internal,
02793 uint16_t tid,
02794 fbTemplate_t *tmpl,
02795 GError **err);
02796
02809 gboolean fbSessionRemoveTemplate(
02810 fbSession_t *session,
02811 gboolean internal,
02812 uint16_t tid,
02813 GError **err);
02814
02826 fbTemplate_t *fbSessionGetTemplate(
02827 fbSession_t *session,
02828 gboolean internal,
02829 uint16_t tid,
02830 GError **err);
02831
02844 fbExporter_t *fbExporterAllocNet(
02845 fbConnSpec_t *spec);
02846
02847 #if HAVE_SPREAD
02848
02859 int fbCollectorGetSpreadReturnGroups(
02860 fbCollector_t *collector,
02861 char *groups[]);
02862
02876 fbExporter_t *fbExporterAllocSpread(
02877 fbSpreadParams_t *params );
02878
02879 #endif
02880
02892 fbExporter_t *fbExporterAllocFile(
02893 const char *path);
02894
02903 fbExporter_t *fbExporterAllocFP(
02904 FILE *fp);
02905
02918 void fbExporterSetStream(
02919 fbExporter_t *exporter,
02920 int sctp_stream);
02921
02934 void fbExporterAutoStream(
02935 fbExporter_t *exporter);
02936
02944 void fbExporterClose(
02945 fbExporter_t *exporter);
02946
02959 fbCollector_t *fbCollectorAllocFile(
02960 void *ctx,
02961 const char *path,
02962 GError **err);
02963
02974 fbCollector_t *fbCollectorAllocFP(
02975 void *ctx,
02976 FILE *fp);
02977
02978
02979 #ifdef HAVE_SPREAD
02980
02990 fbCollector_t *fbCollectorAllocSpread (
02991 void *ctx,
02992 fbSpreadParams_t *params,
02993 GError **err );
02994
02995 #endif
02996
03007 void *fbCollectorGetContext(
03008 fbCollector_t *collector);
03009
03020 void fbCollectorClose(
03021 fbCollector_t *collector);
03022
03023
03035 void fbCollectorSetAcceptOnly(
03036 fbCollector_t *collector,
03037 struct sockaddr *address,
03038 size_t address_length);
03039
03065 fbListener_t *fbListenerAlloc(
03066 fbConnSpec_t *spec,
03067 fbSession_t *session,
03068 fbListenerAppInit_fn appinit,
03069 fbListenerAppFree_fn appfree,
03070 GError **err);
03071
03079 void fbListenerFree(
03080 fbListener_t *listener);
03081
03103 fBuf_t *fbListenerWait(
03104 fbListener_t *listener,
03105 GError **err);
03106
03117 fBuf_t *fbListenerWaitNoCollectors(
03118 fbListener_t *listener,
03119 GError **err);
03120
03128 void fbListenerInterrupt(
03129 fbListener_t *listener);
03130
03131
03147 gboolean fbListenerGetCollector(
03148 fbListener_t *listener,
03149 fbCollector_t **collector,
03150 GError **err);
03151
03152
03153
03154
03170 gboolean fbCollectorClearTranslator(
03171 fbCollector_t *collector,
03172 GError **err);
03173
03174
03190 gboolean fbCollectorSetNetflowV9Translator(
03191 fbCollector_t *collector,
03192 GError **err);
03193
03214 uint32_t fbCollectorGetNetflowMissed(
03215 fbCollector_t *collector,
03216 struct sockaddr *peer,
03217 size_t peerlen,
03218 uint32_t obdomain);
03219
03226 struct sockaddr* fbCollectorGetPeer(
03227 fbCollector_t *collector);
03228
03235 uint32_t fbCollectorGetObservationDomain(
03236 fbCollector_t *collector);
03237
03250 void fbCollectorSetUDPMultiSession(
03251 fbCollector_t *collector,
03252 gboolean multi_session);
03253
03268 void fbCollectorManageUDPStreamByPort(
03269 fbCollector_t *collector,
03270 gboolean manage_port);
03271
03272 #ifdef __cplusplus
03273 }
03274 #endif
03275
03276 #endif