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
00441 #ifndef _FB_PUBLIC_H_
00442 #define _FB_PUBLIC_H_
00443 #include <fixbuf/autoinc.h>
00444
00445 #ifdef __cplusplus
00446 extern "C" {
00447 #endif
00448
00449 #ident "$Id: public.h 18071 2011-11-18 20:27:39Z ecoff_svn $"
00450
00451
00452
00453
00454
00456 #define FB_ERROR_DOMAIN g_quark_from_string("fixbufError")
00457
00458 #define FB_ERROR_TMPL 1
00459
00463 #define FB_ERROR_EOM 2
00464
00469 #define FB_ERROR_EOF 3
00470
00474 #define FB_ERROR_IPFIX 4
00475
00480 #define FB_ERROR_BUFSZ 5
00481
00482 #define FB_ERROR_IMPL 6
00483
00484 #define FB_ERROR_IO 7
00485
00489 #define FB_ERROR_NLREAD 8
00490
00495 #define FB_ERROR_NLWRITE 9
00496
00499 #define FB_ERROR_NOELEMENT 10
00500
00503 #define FB_ERROR_CONN 11
00504
00508 #define FB_ERROR_NETFLOWV9 12
00509
00512 #define FB_ERROR_TRANSMISC 13
00513
00514
00515
00516
00517
00518 struct fBuf_st;
00524 typedef struct fBuf_st fBuf_t;
00525
00532 typedef struct fbVarfield_st {
00534 size_t len;
00541 uint8_t *buf;
00542 } fbVarfield_t;
00543
00544
00545 struct fbInfoModel_st;
00550 typedef struct fbInfoModel_st fbInfoModel_t;
00551
00557 #define FB_IE_INIT(_name_, _ent_, _num_, _len_, _flags_) \
00558 { {.name = _name_}, 0, _ent_, _num_, _len_, _flags_ }
00559
00565 #define FB_IE_NULL \
00566 { {.name = NULL}, 0, 0, 0, 0, 0 }
00567
00572 #define FB_IE_F_NONE 0x00000000
00573
00578 #define FB_IE_F_ENDIAN 0x00000001
00579
00589 #define FB_IE_F_REVERSIBLE 0x00000040
00590
00598 #define FB_IE_F_ALIEN 0x00000080
00599
00603 #define FB_IE_VARLEN 65535
00604
00609 #define FB_IE_BASIC_LIST 291
00610
00614 #define FB_IE_SUBTEMPLATE_LIST 292
00615
00619 #define FB_IE_SUBTEMPLATE_MULTILIST 293
00620
00628 #define FB_IE_PEN_REVERSE 29305
00629
00638 #define FB_IE_VENDOR_BIT_REVERSE 0x4000
00639
00645 #define FB_CISCO_GENERIC 9999
00646
00653 #define FB_CISCO_ASA_EVENT_ID 9998
00654
00661 #define FB_CISCO_ASA_EVENT_XTRA 9997
00662
00668 #define FB_IE_REVERSE_STR "reverse"
00669
00671 #define FB_IE_REVERSE_STRLEN 7
00672
00681 typedef struct fbInfoElement_st {
00683 union {
00689 const struct fbInfoElement_st *canon;
00694 char *name;
00695 } ref;
00696
00702 uint32_t midx;
00704 uint32_t ent;
00709 uint16_t num;
00711 uint16_t len;
00713 uint32_t flags;
00714 } fbInfoElement_t;
00715
00720 #define FB_TID_AUTO 0
00721
00725 #define FB_TID_TS 2
00726
00730 #define FB_TID_OTS 3
00731
00735 #define FB_TID_MIN_DATA 256
00736
00737 struct fbTemplate_st;
00743 typedef struct fbTemplate_st fbTemplate_t;
00744
00750 #define FB_IESPEC_NULL { NULL, 0, 0 }
00751
00757 typedef struct fbInfoElementSpec_st {
00759 char *name;
00764 uint16_t len_override;
00771 uint32_t flags;
00772 } fbInfoElementSpec_t;
00773
00774 struct fbSession_st;
00781 typedef struct fbSession_st fbSession_t;
00782
00784 typedef enum fbTransport_en {
00789 FB_SCTP,
00791 FB_TCP,
00793 FB_UDP,
00799 FB_DTLS_SCTP,
00804 FB_TLS_TCP,
00810 FB_DTLS_UDP,
00811 } fbTransport_t;
00812
00817 typedef struct fbConnSpec_st {
00819 fbTransport_t transport;
00821 char *host;
00823 char *svc;
00825 char *ssl_ca_file;
00827 char *ssl_cert_file;
00829 char *ssl_key_file;
00831 char *ssl_key_pass;
00836 void *vai;
00841 void *vssl_ctx;
00842 } fbConnSpec_t;
00843
00847 #define FB_CONNSPEC_INIT { FB_SCTP, NULL, NULL, \
00848 NULL, NULL, NULL, NULL, \
00849 NULL, NULL }
00850
00851 #if HAVE_SPREAD
00852
00857 #define FB_SPREADPARAMS_INIT { 0, 0, 0 }
00858
00859 typedef struct fbSpreadParams_st {
00862 fbSession_t * session;
00865 char * daemon;
00868 char ** groups;
00869 } fbSpreadParams_t;
00870
00871 #endif
00872
00873 struct fbExporter_st;
00879 typedef struct fbExporter_st fbExporter_t;
00880
00881 struct fbCollector_st;
00889 typedef struct fbCollector_st fbCollector_t;
00890
00891 struct fbListener_st;
00898 typedef struct fbListener_st fbListener_t;
00899
00903 typedef struct fbListenerEntry_st fbListenerEntry_t;
00904
00908 struct fbListenerEntry_st
00909 {
00911 fbListenerEntry_t *next;
00913 fbListenerEntry_t *prev;
00915 fbListener_t *listener;
00916 };
00917
00921 typedef struct fbListenerGroupResult_st fbListenerGroupResult_t;
00922
00928 struct fbListenerGroupResult_st
00929 {
00931 fbListenerGroupResult_t *next;
00933 fbListener_t *listener;
00935 fBuf_t *fbuf;
00936 };
00937
00941 typedef struct fbListenerGroup_st
00942 {
00944 fbListenerEntry_t *head;
00946 void *tableForDescriptorsToListeners;
00947 } fbListenerGroup_t;
00948
00961 typedef gboolean (*fbAcceptCallback_fn) (
00962 fBuf_t *buf,
00963 fbListener_t *listener,
00964 struct sockaddr *sAddr,
00965 GError **err);
00966
00977 typedef void (*fbNewTemplateCallback_fn) (
00978 fbSession_t *session,
00979 uint16_t tid,
00980 fbTemplate_t *tmpl);
00981
00985 #define UNDEFINED 0xFF
00986
00989 #define NONE_OF 0x00
00990
00993 #define EXACTLY_ONE_OF 0x01
00994
00997 #define ONE_OR_MORE_OF 0x02
00998
01001 #define ALL_OF 0x03
01002
01005 #define ORDERED 0x04
01006
01013 gboolean fbListValidSemantic(
01014 uint8_t semantic);
01015
01016
01022 typedef struct fbBasicList_st {
01024 uint8_t semantic;
01026 uint16_t numElements;
01028 uint16_t dataLength;
01030 const fbInfoElement_t *infoElement;
01032 uint8_t *dataPtr;
01033 } fbBasicList_t;
01034
01035
01041 fbBasicList_t* fbBasicListAlloc(
01042 void);
01043
01056 void* fbBasicListInit(
01057 fbBasicList_t *basicListPtr,
01058 uint8_t semantic,
01059 const fbInfoElement_t *infoElement,
01060 uint16_t numElements);
01061
01076 void* fbBasicListInitWithOwnBuffer(
01077 fbBasicList_t *basicListPtr,
01078 uint8_t semantic,
01079 const fbInfoElement_t *infoElement,
01080 uint16_t numElements,
01081 uint16_t dataLength,
01082 uint8_t *dataPtr);
01083
01096 void fbBasicListCollectorInit(
01097 fbBasicList_t *basicListPtr);
01098
01099
01107 uint8_t fbBasicListGetSemantic(
01108 fbBasicList_t *basicListPtr);
01109
01118 void fbBasicListSetSemantic(
01119 fbBasicList_t *basicListPtr,
01120 uint8_t semantic);
01121
01122
01130 const fbInfoElement_t* fbBasicListGetInfoElement(
01131 fbBasicList_t *basicListPtr);
01132
01138 void* fbBasicListGetDataPtr(
01139 fbBasicList_t *basicListPtr);
01140
01149 void* fbBasicListGetIndexedDataPtr(
01150 fbBasicList_t *basicListPtr,
01151 uint16_t index);
01152
01161 void* fbBasicListGetNextPtr(
01162 fbBasicList_t *basicListPtr,
01163 void *currentPtr);
01164
01174 void* fbBasicListRealloc(
01175 fbBasicList_t *basicList,
01176 uint16_t newNumElements);
01177
01185 void* fbBasicListAddNewElements(
01186 fbBasicList_t *basicList,
01187 uint16_t numNewElements);
01188
01194 void fbBasicListClear(
01195 fbBasicList_t *basicListPtr);
01196
01203 void fbBasicListClearWithoutFree(
01204 fbBasicList_t *basicList);
01205
01211 void fbBasicListFree(
01212 fbBasicList_t *basicListPtr);
01213
01214
01215
01216
01217
01218
01219
01227 typedef struct fbSubTemplateList_st {
01229 uint8_t semantic;
01231 uint16_t tmplID;
01233 uint16_t numElements;
01235 const fbTemplate_t *tmpl;
01238 union {
01239 size_t length;
01240 uint64_t extra;
01241 } dataLength;
01243 uint8_t *dataPtr;
01244 } fbSubTemplateList_t;
01245
01252 fbSubTemplateList_t* fbSubTemplateListAlloc(
01253 void);
01254
01267 void* fbSubTemplateListInit(
01268 fbSubTemplateList_t *sTL,
01269 uint8_t semantic,
01270 uint16_t tmplID,
01271 const fbTemplate_t *tmpl,
01272 uint16_t numElements);
01273
01288 void* fbSubTemplateListInitWithOwnBuffer(
01289 fbSubTemplateList_t *subTemplateList,
01290 uint8_t semantic,
01291 uint16_t tmplID,
01292 const fbTemplate_t *tmpl,
01293 uint16_t numElements,
01294 uint16_t dataLength,
01295 uint8_t *dataPtr);
01296
01307 void fbSubTemplateListCollectorInit(
01308 fbSubTemplateList_t *STL);
01309
01315 void* fbSubTemplateListGetDataPtr(
01316 const fbSubTemplateList_t *subTemplateListPtr);
01317
01325 void* fbSubTemplateListGetIndexedDataPtr(
01326 const fbSubTemplateList_t *subTemplateListPtr,
01327 uint16_t index);
01328
01340 void* fbSubTemplateListGetNextPtr(
01341 const fbSubTemplateList_t *subTemplateListPtr,
01342 void *currentPtr);
01343
01350 void fbSubTemplateListSetSemantic(
01351 fbSubTemplateList_t *subTemplateListPtr,
01352 uint8_t semantic);
01353
01359 uint8_t fbSubTemplateListGetSemantic(
01360 fbSubTemplateList_t *subTemplateListPtr);
01361
01367 const fbTemplate_t* fbSubTemplateListGetTemplate(
01368 fbSubTemplateList_t *subTemplateListPtr);
01369
01375 uint16_t fbSubTemplateListGetTemplateID(
01376 fbSubTemplateList_t *subTemplateListPtr);
01377
01388 void* fbSubTemplateListRealloc(
01389 fbSubTemplateList_t *subTemplateList,
01390 uint16_t newNumElements);
01391
01400 void* fbSubTemplateListAddNewElements(
01401 fbSubTemplateList_t *subTemplateList,
01402 uint16_t numNewElements);
01403
01417 void fbSubTemplateListClear(
01418 fbSubTemplateList_t *subTemplateListPtr);
01419
01428 void fbSubTemplateListClearWithoutFree(
01429 fbSubTemplateList_t *subTemplateListPtr);
01430
01438 void fbSubTemplateListFree(
01439 fbSubTemplateList_t *subTemplateListPtr);
01440
01441
01459 typedef struct fbSubTemplateMultiListEntry_st {
01461 uint16_t tmplID;
01463 uint16_t numElements;
01465 fbTemplate_t *tmpl;
01467 size_t dataLength;
01469 uint8_t *dataPtr;
01470 } fbSubTemplateMultiListEntry_t;
01471
01476 typedef struct fbSubTemplateMultiList_st {
01478 uint8_t semantic;
01480 uint16_t numElements;
01482 fbSubTemplateMultiListEntry_t *firstEntry;
01483 } fbSubTemplateMultiList_t;
01484
01494 fbSubTemplateMultiListEntry_t* fbSubTemplateMultiListInit(
01495 fbSubTemplateMultiList_t *STML,
01496 uint8_t semantic,
01497 uint16_t numElements);
01498
01505 void fbSubTemplateMultiListSetSemantic(
01506 fbSubTemplateMultiList_t *STML,
01507 uint8_t semantic);
01508
01514 uint8_t fbSubTemplateMultiListGetSemantic(
01515 fbSubTemplateMultiList_t *STML);
01516
01523 void fbSubTemplateMultiListClear(
01524 fbSubTemplateMultiList_t *STML);
01525
01535 void fbSubTemplateMultiListClearEntries(
01536 fbSubTemplateMultiList_t *STML);
01537
01543 void fbSubTemplateMultiListFree(
01544 fbSubTemplateMultiList_t *STML);
01545
01555 fbSubTemplateMultiListEntry_t* fbSubTemplateMultiListRealloc(
01556 fbSubTemplateMultiList_t *STML,
01557 uint16_t newNumEntries);
01558
01567 fbSubTemplateMultiListEntry_t* fbSubTemplateMultiListAddNewEntries(
01568 fbSubTemplateMultiList_t *STML,
01569 uint16_t numNewEntries);
01570
01576 fbSubTemplateMultiListEntry_t* fbSubTemplateMultiListGetFirstEntry(
01577 fbSubTemplateMultiList_t *STML);
01578
01586 fbSubTemplateMultiListEntry_t* fbSubTemplateMultiListGetIndexedEntry(
01587 fbSubTemplateMultiList_t *STML,
01588 uint16_t index);
01589
01601 fbSubTemplateMultiListEntry_t* fbSubTemplateMultiListGetNextEntry(
01602 fbSubTemplateMultiList_t *STML,
01603 fbSubTemplateMultiListEntry_t *currentEntry);
01604
01616 void* fbSubTemplateMultiListEntryInit(
01617 fbSubTemplateMultiListEntry_t *entry,
01618 uint16_t tmplID,
01619 fbTemplate_t *tmpl,
01620 uint16_t numElements);
01621
01632 void *fbSubTemplateMultiListEntryRealloc(
01633 fbSubTemplateMultiListEntry_t *entry,
01634 uint16_t newNumElements);
01635
01642 void fbSubTemplateMultiListEntryClear(
01643 fbSubTemplateMultiListEntry_t *entry);
01644
01651 void* fbSubTemplateMultiListEntryGetDataPtr(
01652 fbSubTemplateMultiListEntry_t *entry);
01653
01665 void* fbSubTemplateMultiListEntryNextDataPtr(
01666 fbSubTemplateMultiListEntry_t *entry,
01667 void *currentPtr);
01668
01679 void* fbSubTemplateMultiListEntryGetIndexedPtr(
01680 fbSubTemplateMultiListEntry_t *entry,
01681 uint16_t index);
01682
01689 const fbTemplate_t* fbSubTemplateMultiListEntryGetTemplate(
01690 fbSubTemplateMultiListEntry_t *entry);
01691
01698 uint16_t fbSubTemplateMultiListEntryGetTemplateID(
01699 fbSubTemplateMultiListEntry_t *entry);
01700
01701
01702
01708 fbListenerGroup_t* fbListenerGroupAlloc(
01709 void);
01710
01720 int fbListenerGroupAddListener(
01721 fbListenerGroup_t *group,
01722 const fbListener_t *listener);
01723
01733 int fbListenerGroupDeleteListener(
01734 fbListenerGroup_t *group,
01735 const fbListener_t *listener);
01736
01747 fbListenerGroupResult_t* fbListenerGroupWait(
01748 fbListenerGroup_t *group,
01749 GError **err);
01750
01761 gboolean fbListenerWaitAcceptCallback(
01762 fbListener_t *listener,
01763 fbAcceptCallback_fn callback,
01764 GError **err);
01765
01778 gboolean fbListenerGroupWaitAcceptCallback(
01779 fbListenerGroup_t *group,
01780 fbAcceptCallback_fn callback,
01781 GError **err);
01782
01795 fBuf_t *fbListenerOwnSocketCollectorTCP(
01796 fbListener_t *listener,
01797 int sock,
01798 GError **err);
01799
01809 fBuf_t *fbListenerOwnSocketCollectorTLS(
01810 fbListener_t *listener,
01811 int sock,
01812 GError **err);
01813
01819 void fBufInterruptSocket(
01820 fBuf_t *fbuf);
01821
01822
01832 typedef gboolean (*fbListenerAppInit_fn) (
01833 fbListener_t *listener,
01834 void **ctx,
01835 int fd,
01836 struct sockaddr *peer,
01837 size_t peerlen,
01838 GError **err);
01839
01844 typedef void (*fbListenerAppFree_fn) (
01845 void *ctx);
01846
01847
01848
01849
01850
01851
01852
01869 gboolean fBufSetInternalTemplate(
01870 fBuf_t *fbuf,
01871 uint16_t int_tid,
01872 GError **err);
01873
01891 gboolean fBufSetExportTemplate(
01892 fBuf_t *fbuf,
01893 uint16_t ext_tid,
01894 GError **err);
01895
01896 #if HAVE_SPREAD
01897
01914 void fBufSetSpreadExportGroup(
01915 fBuf_t *fbuf,
01916 char **groups,
01917 int num_groups,
01918 GError **err);
01919 #endif
01920
01935 void fBufSetAutomaticMode(
01936 fBuf_t *fbuf,
01937 gboolean automatic);
01938
01946 fbSession_t *fBufGetSession(
01947 fBuf_t *fbuf);
01948
01957 void fBufFree(
01958 fBuf_t *fbuf);
01959
01972 fBuf_t *fBufAllocForExport(
01973 fbSession_t *session,
01974 fbExporter_t *exporter);
01975
01985 fbExporter_t *fBufGetExporter(
01986 fBuf_t *fbuf);
01987
01998 void fBufSetExporter(
01999 fBuf_t *fbuf,
02000 fbExporter_t *exporter);
02001
02002
02026 gboolean fBufAppend(
02027 fBuf_t *fbuf,
02028 uint8_t *recbase,
02029 size_t recsize,
02030 GError **err);
02031
02041 gboolean fBufEmit(
02042 fBuf_t *fbuf,
02043 GError **err);
02044
02056 void fBufSetExportTime(
02057 fBuf_t *fbuf,
02058 uint32_t extime);
02059
02072 fBuf_t *fBufAllocForCollection(
02073 fbSession_t *session,
02074 fbCollector_t *collector);
02075
02085 fbCollector_t *fBufGetCollector(
02086 fBuf_t *fbuf);
02087
02098 void fBufSetCollector(
02099 fBuf_t *fbuf,
02100 fbCollector_t *collector);
02101
02131 gboolean fBufNext(
02132 fBuf_t *fbuf,
02133 uint8_t *recbase,
02134 size_t *recsize,
02135 GError **err);
02136
02150 gboolean fBufNextMessage(
02151 fBuf_t *fbuf,
02152 GError **err);
02153
02161 uint32_t fBufGetExportTime(
02162 fBuf_t *fbuf);
02163
02183 fbTemplate_t *fBufGetCollectionTemplate(
02184 fBuf_t *fbuf,
02185 uint16_t *ext_tid);
02186
02205 fbTemplate_t *fBufNextCollectionTemplate(
02206 fBuf_t *fbuf,
02207 uint16_t *ext_tid,
02208 GError **err);
02209
02221 fbInfoModel_t *fbInfoModelAlloc(void);
02222
02231 void fbInfoModelFree(
02232 fbInfoModel_t *model);
02233
02248 void fbInfoModelAddElement(
02249 fbInfoModel_t *model,
02250 fbInfoElement_t *ie);
02251
02266 void fbInfoModelAddElementArray(
02267 fbInfoModel_t *model,
02268 fbInfoElement_t *ie);
02269
02281 const fbInfoElement_t *fbInfoModelGetElementByName(
02282 fbInfoModel_t *model,
02283 const char *name);
02284
02297 const fbInfoElement_t *fbInfoModelGetElementByID(
02298 fbInfoModel_t *model,
02299 uint16_t id,
02300 uint32_t ent);
02301
02319 fbTemplate_t *fbTemplateAlloc(
02320 fbInfoModel_t *model);
02321
02338 gboolean fbTemplateAppend(
02339 fbTemplate_t *tmpl,
02340 fbInfoElement_t *ex_ie,
02341 GError **err);
02342
02358 gboolean fbTemplateAppendSpec(
02359 fbTemplate_t *tmpl,
02360 fbInfoElementSpec_t *spec,
02361 uint32_t flags,
02362 GError **err);
02363
02381 gboolean fbTemplateAppendSpecArray(
02382 fbTemplate_t *tmpl,
02383 fbInfoElementSpec_t *spec,
02384 uint32_t flags,
02385 GError **err);
02386
02394 uint32_t fbTemplateCountElements(
02395 fbTemplate_t *tmpl);
02396
02406 void fbTemplateSetOptionsScope(
02407 fbTemplate_t *tmpl,
02408 uint16_t scope_count);
02409
02417 uint32_t fbTemplateGetOptionsScope(
02418 fbTemplate_t *tmpl);
02419
02431 gboolean fbTemplateContainsElement(
02432 fbTemplate_t *tmpl,
02433 const fbInfoElement_t *ex_ie);
02434
02444 gboolean fbTemplateContainsElementByName(
02445 fbTemplate_t *tmpl,
02446 fbInfoElementSpec_t *spec);
02447
02457 gboolean fbTemplateContainsAllElementsByName(
02458 fbTemplate_t *tmpl,
02459 fbInfoElementSpec_t *spec);
02460
02468 void fbTemplateFreeUnused(
02469 fbTemplate_t *tmpl);
02470
02484 fbSession_t *fbSessionAlloc(
02485 fbInfoModel_t *model);
02486
02500 void fbSessionAddTemplateCallback(
02501 fbSession_t *session,
02502 fbNewTemplateCallback_fn callback);
02503
02515 void fbSessionAddTemplatePair(
02516 fbSession_t *session,
02517 uint16_t ent_tid,
02518 uint16_t int_tid);
02519
02529 void fbSessionRemoveTemplatePair(
02530 fbSession_t *session,
02531 uint16_t ext_tid);
02532
02541 uint16_t fbSessionLookupTemplatePair(
02542 fbSession_t *session,
02543 uint16_t ext_tid);
02544
02554 void fbSessionFree(
02555 fbSession_t *session);
02556
02569 void fbSessionResetExternal(
02570 fbSession_t *session);
02571
02587 void fbSessionSetDomain(
02588 fbSession_t *session,
02589 uint32_t domain);
02590
02598 uint32_t fbSessionGetDomain(
02599 fbSession_t *session);
02600
02601 #if HAVE_SPREAD
02602
02623 gboolean fbSessionAddTemplatesMulticast(
02624 fbSession_t *session,
02625 char **groups,
02626 gboolean internal,
02627 uint16_t tid,
02628 fbTemplate_t *tmpl,
02629 GError **err);
02630
02631 #endif
02632
02645 gboolean fbSessionExportTemplate(
02646 fbSession_t *session,
02647 uint16_t tid,
02648 GError **err);
02649
02661 gboolean fbSessionExportTemplates(
02662 fbSession_t *session,
02663 GError **err);
02664
02680 uint16_t fbSessionAddTemplate(
02681 fbSession_t *session,
02682 gboolean internal,
02683 uint16_t tid,
02684 fbTemplate_t *tmpl,
02685 GError **err);
02686
02699 gboolean fbSessionRemoveTemplate(
02700 fbSession_t *session,
02701 gboolean internal,
02702 uint16_t tid,
02703 GError **err);
02704
02716 fbTemplate_t *fbSessionGetTemplate(
02717 fbSession_t *session,
02718 gboolean internal,
02719 uint16_t tid,
02720 GError **err);
02721
02734 fbExporter_t *fbExporterAllocNet(
02735 fbConnSpec_t *spec);
02736
02737 #if HAVE_SPREAD
02738
02749 int fbCollectorGetSpreadReturnGroups(
02750 fbCollector_t *collector,
02751 char *groups[]);
02752
02766 fbExporter_t *fbExporterAllocSpread(
02767 fbSpreadParams_t *params );
02768
02769 #endif
02770
02782 fbExporter_t *fbExporterAllocFile(
02783 const char *path);
02784
02793 fbExporter_t *fbExporterAllocFP(
02794 FILE *fp);
02795
02808 void fbExporterSetStream(
02809 fbExporter_t *exporter,
02810 int sctp_stream);
02811
02824 void fbExporterAutoStream(
02825 fbExporter_t *exporter);
02826
02834 void fbExporterClose(
02835 fbExporter_t *exporter);
02836
02849 fbCollector_t *fbCollectorAllocFile(
02850 void *ctx,
02851 const char *path,
02852 GError **err);
02853
02864 fbCollector_t *fbCollectorAllocFP(
02865 void *ctx,
02866 FILE *fp);
02867
02868
02869 #ifdef HAVE_SPREAD
02870
02880 fbCollector_t *fbCollectorAllocSpread (
02881 void *ctx,
02882 fbSpreadParams_t *params,
02883 GError **err );
02884
02885 #endif
02886
02897 void *fbCollectorGetContext(
02898 fbCollector_t *collector);
02899
02910 void fbCollectorClose(
02911 fbCollector_t *collector);
02912
02913
02914
02940 fbListener_t *fbListenerAlloc(
02941 fbConnSpec_t *spec,
02942 fbSession_t *session,
02943 fbListenerAppInit_fn appinit,
02944 fbListenerAppFree_fn appfree,
02945 GError **err);
02946
02954 void fbListenerFree(
02955 fbListener_t *listener);
02956
02978 fBuf_t *fbListenerWait(
02979 fbListener_t *listener,
02980 GError **err);
02981
02992 fBuf_t *fbListenerWaitNoCollectors(
02993 fbListener_t *listener,
02994 GError **err);
03002 void fbListenerInterrupt(
03003 fbListener_t *listener);
03004
03005
03021 gboolean fbListenerGetCollector(
03022 fbListener_t *listener,
03023 fbCollector_t **collector,
03024 GError **err);
03025
03026
03027
03028
03044 gboolean fbCollectorClearTranslator(
03045 fbCollector_t *collector,
03046 GError **err);
03047
03048
03064 gboolean fbCollectorSetNetflowV9Translator(
03065 fbCollector_t *collector,
03066 GError **err);
03067
03074 struct sockaddr* fbCollectorGetPeer(
03075 fbCollector_t *collector);
03076
03077
03078
03079 #ifdef __cplusplus
03080 }
03081 #endif
03082
03083 #endif