From 5c105d9f3fd086aff195d3849dcf847d6b0bd927 Mon Sep 17 00:00:00 2001 From: blogic Date: Fri, 5 Oct 2012 10:12:53 +0000 Subject: branch Attitude Adjustment git-svn-id: svn://svn.openwrt.org/openwrt/branches/attitude_adjustment@33625 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/libipfix/Makefile | 47 +++ package/libipfix/extra/append-wprobe-ie.pl | 38 ++ package/libipfix/extra/wprobe-ie.txt | 14 + package/libipfix/patches/100-openimp_sync.patch | 474 ++++++++++++++++++++++++ package/libipfix/patches/110-wprobe_ie.patch | 44 +++ package/libipfix/patches/120-ipfixmisc.patch | 27 ++ 6 files changed, 644 insertions(+) create mode 100644 package/libipfix/Makefile create mode 100644 package/libipfix/extra/append-wprobe-ie.pl create mode 100644 package/libipfix/extra/wprobe-ie.txt create mode 100644 package/libipfix/patches/100-openimp_sync.patch create mode 100644 package/libipfix/patches/110-wprobe_ie.patch create mode 100644 package/libipfix/patches/120-ipfixmisc.patch (limited to 'package/libipfix') diff --git a/package/libipfix/Makefile b/package/libipfix/Makefile new file mode 100644 index 000000000..e4c931591 --- /dev/null +++ b/package/libipfix/Makefile @@ -0,0 +1,47 @@ +# +# Copyright (C) 2006 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=libipfix +PKG_VERSION:=r51 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME).$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources +PKG_MD5SUM:=0e5b2871ea20ac48eda3f6006c5dba28 +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME).$(PKG_VERSION) + +include $(INCLUDE_DIR)/package.mk + +define Package/libipfix + SECTION:=libs + CATEGORY:=Libraries + TITLE:=IP Flow Information Export Library + URL:=http://www.fokus.fraunhofer.de/de/net/more_about/download/ipfixlib.html + BUILDONLY:=1 +endef + +TARGET_CFLAGS += \ + -ffunction-sections -fdata-sections + +define Build/Compile + $(MAKE) -C $(PKG_BUILD_DIR) \ + CCOPT="$(TARGET_CFLAGS) -I$(BUILD_DIR)/linux/include" \ + prefix="$(PKG_INSTALL_DIR)/usr" \ + exec_prefix="$(PKG_INSTALL_DIR)/usr" \ + all install + $(TARGET_CROSS)ranlib $(PKG_INSTALL_DIR)/usr/lib/libipfix.a + $(TARGET_CROSS)ranlib $(PKG_INSTALL_DIR)/usr/lib/libipfixmisc.a +endef + +define Build/InstallDev + $(INSTALL_DIR) $(1) + $(CP) $(PKG_INSTALL_DIR)/* $(1)/ +endef + +$(eval $(call BuildPackage,libipfix)) diff --git a/package/libipfix/extra/append-wprobe-ie.pl b/package/libipfix/extra/append-wprobe-ie.pl new file mode 100644 index 000000000..8bb658bbb --- /dev/null +++ b/package/libipfix/extra/append-wprobe-ie.pl @@ -0,0 +1,38 @@ +use strict; + +my @fields = ( + [ "_n", "UINT", " - Number of samples", 4 ], + [ "_s", "UINT", " - Sum of samples", 8 ], + [ "_ss", "UINT", " - Sum of squared samples", 8 ], +); + +my $file = $ARGV[0] or die "Syntax: $0 \n"; +-f $file or die "File not found\n"; +my $start = $ARGV[1]; +$start =~ /^\d+$/ or die "Invalid start number"; +open FILE, "<$file" or die "Can't open file"; +while () { + /^(%?)(\w+),\s*(\w+),\s*(.+)$/ and do { + my $counter = $1; + my $rfield = $2; + my $nfield = $3; + my $descr = $4; + my @f; + if ($counter) { + @f = [ "", "UINT", "", 4]; + } else { + @f = @fields; + } + foreach my $f (@f) { + my $nr = $start++; + my $n = $f->[0]; + my $N = uc $n; + my $ftype = $f->[1]; + my $fdesc = $f->[2]; + my $size = $f->[3]; + print "$nr, IPFIX_FT_WPROBE_$rfield$N, $size, IPFIX_CODING_$ftype, \"$nfield$n\", \"$descr$fdesc\"\n"; + } + }; +} +close FILE; + diff --git a/package/libipfix/extra/wprobe-ie.txt b/package/libipfix/extra/wprobe-ie.txt new file mode 100644 index 000000000..26d64d213 --- /dev/null +++ b/package/libipfix/extra/wprobe-ie.txt @@ -0,0 +1,14 @@ +NOISE, global_noise, wprobe global noice floor +PHY_BUSY, global_phy_busy, wprobe global airtime total +PHY_RX, global_phy_rx, wprobe global airtime total from rx-frame +PHY_TX, global_phy_tx, wprobe global airtime total from tx-frame +RSSI, link_rssi, wprobe link received signal strength indication +SIGNAL, link_signal, wprobe link signal strength in dB +IEEE_RX_RATE, link_ieee_rx_rate, wprobe link IEEE 802.11 RX data rate +IEEE_TX_RATE, link_ieee_tx_rate, wprobe link IEEE 802.11 TX data rate +RETRANSMIT_200, link_retransmit_200, wprobe link total retransmissions per packet - <200 bytes +RETRANSMIT_400, link_retransmit_400, wprobe link total retransmissions per packet - <400 bytes +RETRANSMIT_800, link_retransmit_800, wprobe link total retransmissions per packet - <800 bytes +RETRANSMIT_1600, link_retransmit_1600, wprobe link total retransmissions per packet - >800 bytes +%FRAMES, global_frames, wprobe global number of 802.11 frames seen +%PROBEREQ, global_probereq, wprobe global number of 802.11 probe requests seen diff --git a/package/libipfix/patches/100-openimp_sync.patch b/package/libipfix/patches/100-openimp_sync.patch new file mode 100644 index 000000000..5b6e2e379 --- /dev/null +++ b/package/libipfix/patches/100-openimp_sync.patch @@ -0,0 +1,474 @@ +--- a/lib/ipfix.c ++++ b/lib/ipfix.c +@@ -37,6 +37,9 @@ $$LIC$$ + #ifdef SCTPSUPPORT + #include + #endif ++#ifndef NOTHREADS ++#include ++#endif + #include + #include + +@@ -123,6 +126,18 @@ static uint16_t g_lasttid; + static ipfix_datarecord_t g_data = { NULL, NULL, 0 }; /* ipfix_export */ + + static ipfix_field_t *g_ipfix_fields; ++#ifndef NOTHREADS ++static pthread_mutex_t g_mutex; ++#define mod_lock() { \ ++ if ( pthread_mutex_lock( &g_mutex ) !=0 ) \ ++ mlogf( 0, "[ipfix] mutex_lock() failed: %s\n", \ ++ strerror( errno ) ); \ ++ } ++#define mod_unlock() { pthread_mutex_unlock( &g_mutex ); } ++#else ++#define mod_lock() ++#define mod_unlock() ++#endif + + /*----- prototypes -------------------------------------------------------*/ + +@@ -133,6 +148,7 @@ int _ipfix_send_message( ipfix_t *ifh, + ipfix_message_t *message ); + int _ipfix_write_msghdr( ipfix_t *ifh, ipfix_message_t *msg, iobuf_t *buf ); + void _ipfix_disconnect( ipfix_collector_t *col ); ++int _ipfix_export_flush( ipfix_t *ifh ); + + + /* name : do_writeselect +@@ -576,16 +592,18 @@ int ipfix_decode_float( void *in, void * + + int ipfix_snprint_float( char *str, size_t size, void *data, size_t len ) + { +- float tmp32; +- double tmp64; ++ uint32_t tmp32; ++ uint64_t tmp64; + + switch ( len ) { + case 4: +- ipfix_decode_float( data, &tmp32, 4); +- return snprintf( str, size, "%f", tmp32 ); ++ memcpy( &tmp32, data, len ); ++ tmp32 = htonl( tmp32 ); ++ return snprintf( str, size, "%f", (float)tmp32 ); + case 8: +- ipfix_decode_float( data, &tmp64, 8); +- return snprintf( str, size, "%lf", tmp64); ++ memcpy( &tmp64, data, len ); ++ tmp64 = HTONLL( tmp64 ); ++ return snprintf( str, size, "%lf", (double)tmp64 ); + default: + break; + } +@@ -682,12 +700,19 @@ int ipfix_get_eno_ieid( char *field, int + * parameters: + * remarks: init module, read field type info. + */ +-int ipfix_init ( void ) ++int ipfix_init( void ) + { + if ( g_tstart ) { + ipfix_cleanup(); + } + ++#ifndef NOTHREADS ++ if ( pthread_mutex_init( &g_mutex, NULL ) !=0 ) { ++ mlogf( 0, "[ipfix] pthread_mutex_init() failed: %s\n", ++ strerror(errno) ); ++ return -1; ++ } ++#endif + g_tstart = time(NULL); + signal( SIGPIPE, SIG_IGN ); + g_lasttid = 255; +@@ -806,6 +831,9 @@ void ipfix_cleanup ( void ) + g_data.maxfields = 0; + g_data.lens = NULL; + g_data.addrs = NULL; ++#ifndef NOTHREADS ++ (void)pthread_mutex_destroy( &g_mutex ); ++#endif + } + + int _ipfix_connect ( ipfix_collector_t *col ) +@@ -1465,7 +1493,7 @@ int _ipfix_write_template( ipfix_t + default: + /* check space */ + if ( tsize+ifh->offset > IPFIX_DEFAULT_BUFLEN ) { +- if ( ipfix_export_flush( ifh ) < 0 ) ++ if ( _ipfix_export_flush( ifh ) < 0 ) + return -1; + if ( tsize+ifh->offset > IPFIX_DEFAULT_BUFLEN ) + return -1; +@@ -1474,6 +1502,8 @@ int _ipfix_write_template( ipfix_t + /* write template prior to data */ + if ( ifh->offset > 0 ) { + memmove( ifh->buffer + tsize, ifh->buffer, ifh->offset ); ++ if ( ifh->cs_tid ) ++ ifh->cs_header += tsize; + } + + buf = ifh->buffer; +@@ -1615,8 +1645,11 @@ int ipfix_open( ipfix_t **ipfixh, int so + return -1; + } + node->ifh = i; ++ ++ mod_lock(); + node->next = g_ipfixlist; + g_ipfixlist = node; ++ mod_unlock(); + + *ipfixh = i; + return 0; +@@ -1633,7 +1666,8 @@ void ipfix_close( ipfix_t *h ) + { + ipfix_node_t *l, *n; + +- ipfix_export_flush( h ); ++ mod_lock(); ++ _ipfix_export_flush( h ); + + while( h->collectors ) + _ipfix_drop_collector( (ipfix_collector_t**)&h->collectors ); +@@ -1659,6 +1693,7 @@ void ipfix_close( ipfix_t *h ) + #endif + free(h->buffer); + free(h); ++ mod_unlock(); + } + } + +@@ -2156,6 +2191,22 @@ void ipfix_release_template( ipfix_t *if + ipfix_delete_template( ifh, templ ); + } + ++static void _finish_cs( ipfix_t *ifh ) ++{ ++ size_t buflen; ++ uint8_t *buf; ++ ++ /* finish current dataset */ ++ if ( (buf=ifh->cs_header) ==NULL ) ++ return; ++ buflen = 0; ++ INSERTU16( buf+buflen, buflen, ifh->cs_tid ); ++ INSERTU16( buf+buflen, buflen, ifh->cs_bytes ); ++ ifh->cs_bytes = 0; ++ ifh->cs_header = NULL; ++ ifh->cs_tid = 0; ++} ++ + int ipfix_export( ipfix_t *ifh, ipfix_template_t *templ, ... ) + { + int i; +@@ -2199,13 +2250,14 @@ int ipfix_export( ipfix_t *ifh, ipfix_te + g_data.addrs, g_data.lens ); + } + +-int ipfix_export_array( ipfix_t *ifh, +- ipfix_template_t *templ, +- int nfields, +- void **fields, +- uint16_t *lengths ) ++static int ++_ipfix_export_array( ipfix_t *ifh, ++ ipfix_template_t *templ, ++ int nfields, ++ void **fields, ++ uint16_t *lengths ) + { +- int i; ++ int i, newset_f=0; + size_t buflen, datasetlen; + uint8_t *p, *buf; + +@@ -2249,7 +2301,19 @@ int ipfix_export_array( ipfix_t + + /** get size of data set, check space + */ +- for ( i=0, datasetlen=4; itid == ifh->cs_tid ) { ++ newset_f = 0; ++ datasetlen = 0; ++ } ++ else { ++ if ( ifh->cs_tid > 0 ) { ++ _finish_cs( ifh ); ++ } ++ newset_f = 1; ++ datasetlen = 4; ++ } ++ ++ for ( i=0; ifields[i].flength == IPFIX_FT_VARLEN ) { + if ( lengths[i]>254 ) + datasetlen += 3; +@@ -2263,21 +2327,29 @@ int ipfix_export_array( ipfix_t + } + datasetlen += lengths[i]; + } +- if ( ((ifh->offset + datasetlen) > IPFIX_DEFAULT_BUFLEN ) +- && (ipfix_export_flush( ifh ) <0) ) { +- return -1; ++ ++ if ( (ifh->offset + datasetlen) > IPFIX_DEFAULT_BUFLEN ) { ++ if ( ifh->cs_tid ) ++ _finish_cs( ifh ); ++ newset_f = 1; ++ ++ if ( _ipfix_export_flush( ifh ) <0 ) ++ return -1; + } + +- /* fill buffer +- */ ++ /* fill buffer */ + buf = (uint8_t*)(ifh->buffer) + ifh->offset; + buflen = 0; + +- /* insert data set +- */ +- ifh->nrecords ++; +- INSERTU16( buf+buflen, buflen, templ->tid ); +- INSERTU16( buf+buflen, buflen, datasetlen ); ++ if ( newset_f ) { ++ /* insert data set ++ */ ++ ifh->cs_bytes = 0; ++ ifh->cs_header = buf; ++ ifh->cs_tid = templ->tid; ++ INSERTU16( buf+buflen, buflen, templ->tid ); ++ INSERTU16( buf+buflen, buflen, 4 ); ++ } + + /* insert data record + */ +@@ -2303,7 +2375,9 @@ int ipfix_export_array( ipfix_t + buflen += lengths[i]; + } + ++ ifh->nrecords ++; + ifh->offset += buflen; ++ ifh->cs_bytes += buflen; + if ( ifh->version == IPFIX_VERSION ) + ifh->seqno ++; + return 0; +@@ -2313,7 +2387,7 @@ int ipfix_export_array( ipfix_t + * parameters: + * remarks: rewrite this func! + */ +-int ipfix_export_flush( ipfix_t *ifh ) ++int _ipfix_export_flush( ipfix_t *ifh ) + { + iobuf_t *buf; + ipfix_collector_t *col; +@@ -2322,8 +2396,14 @@ int ipfix_export_flush( ipfix_t *ifh ) + if ( (ifh==NULL) || (ifh->offset==0) ) + return 0; + +- if ( (buf=_ipfix_getbuf()) ==NULL ) ++ if ( ifh->cs_tid > 0 ) { ++ /* finish current dataset */ ++ _finish_cs( ifh ); ++ } ++ ++ if ( (buf=_ipfix_getbuf()) ==NULL ) { + return -1; ++ } + + #ifdef DEBUG + mlogf( 0, "[ipfix_export_flush] msg has %d records, %d bytes\n", +@@ -2350,3 +2430,30 @@ int ipfix_export_flush( ipfix_t *ifh ) + _ipfix_freebuf( buf ); + return ret; + } ++ ++int ipfix_export_array( ipfix_t *ifh, ++ ipfix_template_t *templ, ++ int nfields, ++ void **fields, ++ uint16_t *lengths ) ++{ ++ int ret; ++ ++ mod_lock(); ++ ret = _ipfix_export_array( ifh, templ, nfields, fields, lengths ); ++ mod_unlock(); ++ ++ return ret; ++} ++ ++int ipfix_export_flush( ipfix_t *ifh ) ++{ ++ int ret; ++ ++ mod_lock(); ++ ret = _ipfix_export_flush( ifh ); ++ mod_unlock(); ++ ++ return ret; ++} ++ +--- a/lib/ipfix.h ++++ b/lib/ipfix.h +@@ -142,6 +142,12 @@ typedef struct + int nrecords; /* no. of records in buffer */ + size_t offset; /* output buffer fill level */ + uint32_t seqno; /* sequence no. of next message */ ++ ++ /* experimental */ ++ int cs_tid; /* template id of current dataset */ ++ int cs_bytes; /* size of current set */ ++ uint8_t *cs_header; /* start of current set */ ++ + } ipfix_t; + + /** exporter funcs +--- a/lib/ipfix_col.c ++++ b/lib/ipfix_col.c +@@ -897,6 +897,8 @@ int ipfix_decode_datarecord( ipfixt_node + return -1; + } + ++ n->ipfixt->fields[i].elem->decode(p,p,len); ++ + data->lens[i] = len; + data->addrs[i] = p; + +@@ -907,7 +909,7 @@ int ipfix_decode_datarecord( ipfixt_node + return 0; + } + +-static void do_free_datarecord( ipfix_datarecord_t *data ) ++void ipfix_free_datarecord( ipfix_datarecord_t *data ) + { + if ( data ) { + if ( data->addrs ) +@@ -925,6 +927,7 @@ int ipfix_parse_msg( ipfix_input_t *inpu + ipfix_hdr_t hdr; /* ipfix packet header */ + ipfixs_node_t *s; + ipfix_datarecord_t data = { NULL, NULL, 0 }; ++ ipfixe_node_t *e; + uint8_t *buf; /* ipfix payload */ + uint16_t setid, setlen; /* set id, set lenght */ + int i, nread, offset; /* counter */ +@@ -1042,6 +1045,12 @@ int ipfix_parse_msg( ipfix_input_t *inpu + err_flag = 1; + } + else { ++ for ( e=g_exporter; e!=NULL; e=e->next ) { ++ if ( e->elem->export_dset ) ++ (void) e->elem->export_dset( t, buf+nread, setlen, ++ e->elem->data ); ++ } ++ + /** read data records + */ + for ( offset=nread, bytesleft=setlen; bytesleft>4; ) { +@@ -1076,11 +1085,11 @@ int ipfix_parse_msg( ipfix_input_t *inpu + goto errend; + + end: +- do_free_datarecord( &data ); ++ ipfix_free_datarecord( &data ); + return nread; + + errend: +- do_free_datarecord( &data ); ++ ipfix_free_datarecord( &data ); + return -1; + } + +@@ -1093,7 +1102,7 @@ void process_client_tcp( int fd, int mas + tcp_conn_t *tcon = (tcp_conn_t*)data; + char *func = "process_client_tcp"; + +- mlogf( 3, "[%s] fd %d mask %d called.\n", func, fd, mask ); ++ mlogf( 4, "[%s] fd %d mask %d called.\n", func, fd, mask ); + + /** read ipfix header + */ +--- a/lib/ipfix_col.h ++++ b/lib/ipfix_col.h +@@ -88,6 +88,7 @@ typedef struct ipfix_col_info + int (*export_newsource)(ipfixs_node_t*,void*); + int (*export_newmsg)(ipfixs_node_t*,ipfix_hdr_t*,void*); + int (*export_trecord)(ipfixs_node_t*,ipfixt_node_t*,void*); ++ int (*export_dset)(ipfixt_node_t*,uint8_t*,size_t,void*); + int (*export_drecord)(ipfixs_node_t*,ipfixt_node_t*, + ipfix_datarecord_t*,void*); + void (*export_cleanup)(void*); +--- a/lib/ipfix_col_files.c ++++ b/lib/ipfix_col_files.c +@@ -68,7 +68,7 @@ static int export_newsource_file( ipfixs + return -1; + } + snprintf( s->fname+strlen(s->fname), PATH_MAX-strlen(s->fname), +- "/%u", s->odid ); ++ "/%u", (unsigned int)s->odid ); + if ( (access( s->fname, R_OK ) <0 ) + && (mkdir( s->fname, S_IRWXU ) <0) ) { + mlogf( 0, "[%s] cannot access dir '%s': %s\n", +--- a/lib/ipfix_FOKUS_IEs.txt ++++ b/lib/ipfix_FOKUS_IEs.txt +@@ -24,6 +24,8 @@ + 196, IPFIX_FT_PKTID, 4, IPFIX_CODING_UINT, "pktId", "FOKUS packet id" + 197, IPFIX_FT_STARTTIME, 4, IPFIX_CODING_INT, "startTime", "FOKUS interval start" + 198, IPFIX_FT_ENDTIME, 4, IPFIX_CODING_INT, "endTime", "FOKUS interval end" ++199, IPFIX_FT_RTT_USEC, 8, IPFIX_CODING_UINT, "rtt_usec", "FOKUS rtt in us" ++ + 300, IPFIX_FT_FLOWCREATIONTIMEUSEC, 4, IPFIX_CODING_INT, "flowCreationTimeUsec", "FOKUS flow start usec fraction" + 301, IPFIX_FT_FLOWENDTIMEUSEC, 4, IPFIX_CODING_INT, "flowEndTimeUsec", "FOKUS flow end usec fraction" + 303, IPFIX_FT_TC_PACKETS, 4, IPFIX_CODING_UINT, "tcPackets", "DAIDALOS Packets seen" +@@ -39,3 +41,48 @@ + 313, IPFIX_FT_OWDVARMIN_NSEC, 4, IPFIX_CODING_INT, "owdvarmin_nsec", "FOKUS minimum owd variance in ns" + 314, IPFIX_FT_OWDVARMAX_NSEC, 4, IPFIX_CODING_INT, "owdvarmax_nsec", "FOKUS maximum ow variance in ns" + ++# Project INTERSECTION ++315, IPFIX_FT_SOURCEIPV4FANOUT, 4, IPFIX_CODING_UINT,"sourceIPv4FanOut", "FOKUS IPv4 fanout" ++316, IPFIX_FT_DESTINATIONIPV4FANIN, 4, IPFIX_CODING_UINT,"destinationIPv4FanIn", "FOKUS IPv4 fanin" ++ ++# Project PRISM ++ ++330, IPFIX_FT_PR_SESSIONID, 4, IPFIX_CODING_UINT, "sessionId", "PRISM Session ID" ++331, IPFIX_FT_PR_TRANSACTIONID, 4, IPFIX_CODING_UINT, "transactionId", "PRISM Transaction ID" ++332, IPFIX_FT_PR_ENCRYPTEDDATA, 65535, IPFIX_CODING_STRING, "encryptedData", "PRISM encrypted data" ++333, IPFIX_FT_PR_DECRYPTIONKEY, 65535, IPFIX_CODING_STRING, "decryptionKey", "PRISM decryption key" ++334, IPFIX_FT_PR_KEYSHARE, 65535, IPFIX_CODING_STRING, "keyShare", "PRISM key share" ++335, IPFIX_FT_PR_KEYSHAREADP, 65535, IPFIX_CODING_STRING, "keyShareAdp", "PRISM key share ADP" ++336, IPFIX_FT_PR_INITVECTOR, 65535, IPFIX_CODING_STRING, "cryptoInitVector", "PRISM crypto init vector" ++ ++ ++# these information elements have been defined by FOKUS for the Oracle project ++ ++402, IPFIX_FT_ORsignalBandwidth, 4, IPFIX_CODING_UINT, "ORsignalBandwidth", "signal bandwidth" ++403, IPFIX_FT_ORsignalPower, 2, IPFIX_CODING_UINT, "ORsignalPower", "ERIP" ++404, IPFIX_FT_ORmodulationType, 2, IPFIX_CODING_UINT, "ORmodulationType", "AM/FM,.." ++405, IPFIX_FT_ORsymbolRate, 2, IPFIX_CODING_UINT, "ORsymbolRate", "symbol rate" ++406, IPFIX_FT_ORmodulationOrder, 1, IPFIX_CODING_UINT, "ORmodulationOrder", "number of levels" ++407, IPFIX_FT_ORrolloffFactor, 2, IPFIX_CODING_UINT, "ORrolloffFactor", "roll of factor" ++408, IPFIX_FT_ORgeopositionLon, 4, IPFIX_CODING_UINT, "ORgeopositionLon", "GPS coordinate, resolution 1 cm" ++409, IPFIX_FT_ORgeopositionLat, 4, IPFIX_CODING_UINT, "ORgeopositionLat", "GPS coordinate, resolution 1 cm" ++410, IPFIX_FT_ORgeopositionElev, 4, IPFIX_CODING_UINT, "ORgeopositionElev", "GPS coordinate, resolution 1 cm" ++411, IPFIX_FT_ORpolicyRecord, 65535, IPFIX_CODING_STRING, "ORpolicyRecord", "policy record has variable length, First 8 bits in data describe the length (in bytes) of the field" ++420, IPFIX_FT_channel_status, 1, IPFIX_CODING_UINT, "channel_status", vacancy of the scanned channel (1: channel busy, 0: channel idle)" ++421, IPFIX_FT_sensing_value, 2, IPFIX_CODING_UINT, "sensing_value", "Cost function output" ++422, IPFIX_FT_sensing_threshold, 2, IPFIX_CODING_UINT, "sensing_threshold", "Decision threshold" ++423, IPFIX_FT_OR_terminal_id, 1, IPFIX_CODING_UINT, "OR_terminal_id", "terminal identifier" ++424, IPFIX_FT_OR_terminal_id_list, 65535, IPFIX_CODING_STRING, "OR_terminal_id_list", "terminal identifier list" ++425, IPFIX_FT_Infrastructure_network_id, 1, IPFIX_CODING_UINT, "Infrastructure_network_id", "network identifier" ++426, IPFIX_FT_Infrastructure_network_type, 1, IPFIX_CODING_UINT, "Infrastructure_network_type", "network type (GSM - 1, UMTS - 2, WiMAX - 3, WiFi - 4)" ++427, IPFIX_FT_Battery_lifetime_min, 1, IPFIX_CODING_UINT, "Battery_lifetime_min", "expected battery lifetime to provide requested services or functionalities, in minutes" ++428, IPFIX_FT_Battery_lifetime_h, 1, IPFIX_CODING_UINT, "Battery_lifetime_h", "expected battery lifetime to provide requested services or functionalities, in hours" ++429, IPFIX_FT_Battery_status, 1, IPFIX_CODING_UINT, "Battery_status", "expected battery lifetime to provide requested services or functionalities, 1 bit status flag, values 1 or 0" ++430, IPFIX_FT_Cell_id_number, 4, IPFIX_CODING_UINT, "Cell_id_number", "16-32 bit cell id number, identifier" ++431, IPFIX_FT_Spectral_allocation_vector, 1, IPFIX_CODING_UINT, "Spectral_allocation_vector", "binary vector to indicate whether a band is free 1 bit 0 or not 1 bit 1" ++432, IPFIX_FT_Spectral_allocation_profile, 2, IPFIX_CODING_UINT, "Spectral_allocation_profile", "received power spectral density vs. frequency to indicate spectral activity in the band of interest (8-16 bits per discrete frequency value)" ++433, IPFIX_FT_Center_frequency, 2, IPFIX_CODING_UINT, "Center_frequency", "Center frequency of the sensed band" ++434, IPFIX_FT_Bandwidth_of_CAP, 2, IPFIX_CODING_UINT, "Bandwidth_of_CAP", "Bandwidth of the spectral allocation profile" ++435, IPFIX_FT_ORmodulation, 1, IPFIX_CODING_UINT, "ORmodulation", "CREST factor" ++436, IPFIX_FT_ORprofileRecord, 65535, IPFIX_CODING_STRING, "ORprofileRecord", "profile record has variable length, First 8 bits in data describe the length (in bytes) of the field" ++ diff --git a/package/libipfix/patches/110-wprobe_ie.patch b/package/libipfix/patches/110-wprobe_ie.patch new file mode 100644 index 000000000..5e3728081 --- /dev/null +++ b/package/libipfix/patches/110-wprobe_ie.patch @@ -0,0 +1,44 @@ +--- a/lib/ipfix_FOKUS_IEs.txt ++++ b/lib/ipfix_FOKUS_IEs.txt +@@ -86,3 +86,41 @@ + 435, IPFIX_FT_ORmodulation, 1, IPFIX_CODING_UINT, "ORmodulation", "CREST factor" + 436, IPFIX_FT_ORprofileRecord, 65535, IPFIX_CODING_STRING, "ORprofileRecord", "profile record has variable length, First 8 bits in data describe the length (in bytes) of the field" + ++500, IPFIX_FT_WPROBE_NOISE_N, 4, IPFIX_CODING_UINT, "global_noise_n", "wprobe global noice floor - Number of samples" ++501, IPFIX_FT_WPROBE_NOISE_S, 8, IPFIX_CODING_UINT, "global_noise_s", "wprobe global noice floor - Sum of samples" ++502, IPFIX_FT_WPROBE_NOISE_SS, 8, IPFIX_CODING_UINT, "global_noise_ss", "wprobe global noice floor - Sum of squared samples" ++503, IPFIX_FT_WPROBE_PHY_BUSY_N, 4, IPFIX_CODING_UINT, "global_phy_busy_n", "wprobe global airtime total - Number of samples" ++504, IPFIX_FT_WPROBE_PHY_BUSY_S, 8, IPFIX_CODING_UINT, "global_phy_busy_s", "wprobe global airtime total - Sum of samples" ++505, IPFIX_FT_WPROBE_PHY_BUSY_SS, 8, IPFIX_CODING_UINT, "global_phy_busy_ss", "wprobe global airtime total - Sum of squared samples" ++506, IPFIX_FT_WPROBE_PHY_RX_N, 4, IPFIX_CODING_UINT, "global_phy_rx_n", "wprobe global airtime total from rx-frame - Number of samples" ++507, IPFIX_FT_WPROBE_PHY_RX_S, 8, IPFIX_CODING_UINT, "global_phy_rx_s", "wprobe global airtime total from rx-frame - Sum of samples" ++508, IPFIX_FT_WPROBE_PHY_RX_SS, 8, IPFIX_CODING_UINT, "global_phy_rx_ss", "wprobe global airtime total from rx-frame - Sum of squared samples" ++509, IPFIX_FT_WPROBE_PHY_TX_N, 4, IPFIX_CODING_UINT, "global_phy_tx_n", "wprobe global airtime total from tx-frame - Number of samples" ++510, IPFIX_FT_WPROBE_PHY_TX_S, 8, IPFIX_CODING_UINT, "global_phy_tx_s", "wprobe global airtime total from tx-frame - Sum of samples" ++511, IPFIX_FT_WPROBE_PHY_TX_SS, 8, IPFIX_CODING_UINT, "global_phy_tx_ss", "wprobe global airtime total from tx-frame - Sum of squared samples" ++512, IPFIX_FT_WPROBE_RSSI_N, 4, IPFIX_CODING_UINT, "link_rssi_n", "wprobe link received signal strength indication - Number of samples" ++513, IPFIX_FT_WPROBE_RSSI_S, 8, IPFIX_CODING_UINT, "link_rssi_s", "wprobe link received signal strength indication - Sum of samples" ++514, IPFIX_FT_WPROBE_RSSI_SS, 8, IPFIX_CODING_UINT, "link_rssi_ss", "wprobe link received signal strength indication - Sum of squared samples" ++515, IPFIX_FT_WPROBE_SIGNAL_N, 4, IPFIX_CODING_UINT, "link_signal_n", "wprobe link signal strength in dB - Number of samples" ++516, IPFIX_FT_WPROBE_SIGNAL_S, 8, IPFIX_CODING_UINT, "link_signal_s", "wprobe link signal strength in dB - Sum of samples" ++517, IPFIX_FT_WPROBE_SIGNAL_SS, 8, IPFIX_CODING_UINT, "link_signal_ss", "wprobe link signal strength in dB - Sum of squared samples" ++518, IPFIX_FT_WPROBE_IEEE_RX_RATE_N, 4, IPFIX_CODING_UINT, "link_ieee_rx_rate_n", "wprobe link IEEE 802.11 RX data rate - Number of samples" ++519, IPFIX_FT_WPROBE_IEEE_RX_RATE_S, 8, IPFIX_CODING_UINT, "link_ieee_rx_rate_s", "wprobe link IEEE 802.11 RX data rate - Sum of samples" ++520, IPFIX_FT_WPROBE_IEEE_RX_RATE_SS, 8, IPFIX_CODING_UINT, "link_ieee_rx_rate_ss", "wprobe link IEEE 802.11 RX data rate - Sum of squared samples" ++521, IPFIX_FT_WPROBE_IEEE_TX_RATE_N, 4, IPFIX_CODING_UINT, "link_ieee_tx_rate_n", "wprobe link IEEE 802.11 TX data rate - Number of samples" ++522, IPFIX_FT_WPROBE_IEEE_TX_RATE_S, 8, IPFIX_CODING_UINT, "link_ieee_tx_rate_s", "wprobe link IEEE 802.11 TX data rate - Sum of samples" ++523, IPFIX_FT_WPROBE_IEEE_TX_RATE_SS, 8, IPFIX_CODING_UINT, "link_ieee_tx_rate_ss", "wprobe link IEEE 802.11 TX data rate - Sum of squared samples" ++524, IPFIX_FT_WPROBE_RETRANSMIT_200_N, 4, IPFIX_CODING_UINT, "link_retransmit_200_n", "wprobe link total retransmissions per packet - <200 bytes - Number of samples" ++525, IPFIX_FT_WPROBE_RETRANSMIT_200_S, 8, IPFIX_CODING_UINT, "link_retransmit_200_s", "wprobe link total retransmissions per packet - <200 bytes - Sum of samples" ++526, IPFIX_FT_WPROBE_RETRANSMIT_200_SS, 8, IPFIX_CODING_UINT, "link_retransmit_200_ss", "wprobe link total retransmissions per packet - <200 bytes - Sum of squared samples" ++527, IPFIX_FT_WPROBE_RETRANSMIT_400_N, 4, IPFIX_CODING_UINT, "link_retransmit_400_n", "wprobe link total retransmissions per packet - <400 bytes - Number of samples" ++528, IPFIX_FT_WPROBE_RETRANSMIT_400_S, 8, IPFIX_CODING_UINT, "link_retransmit_400_s", "wprobe link total retransmissions per packet - <400 bytes - Sum of samples" ++529, IPFIX_FT_WPROBE_RETRANSMIT_400_SS, 8, IPFIX_CODING_UINT, "link_retransmit_400_ss", "wprobe link total retransmissions per packet - <400 bytes - Sum of squared samples" ++530, IPFIX_FT_WPROBE_RETRANSMIT_800_N, 4, IPFIX_CODING_UINT, "link_retransmit_800_n", "wprobe link total retransmissions per packet - <800 bytes - Number of samples" ++531, IPFIX_FT_WPROBE_RETRANSMIT_800_S, 8, IPFIX_CODING_UINT, "link_retransmit_800_s", "wprobe link total retransmissions per packet - <800 bytes - Sum of samples" ++532, IPFIX_FT_WPROBE_RETRANSMIT_800_SS, 8, IPFIX_CODING_UINT, "link_retransmit_800_ss", "wprobe link total retransmissions per packet - <800 bytes - Sum of squared samples" ++533, IPFIX_FT_WPROBE_RETRANSMIT_1600_N, 4, IPFIX_CODING_UINT, "link_retransmit_1600_n", "wprobe link total retransmissions per packet - >800 bytes - Number of samples" ++534, IPFIX_FT_WPROBE_RETRANSMIT_1600_S, 8, IPFIX_CODING_UINT, "link_retransmit_1600_s", "wprobe link total retransmissions per packet - >800 bytes - Sum of samples" ++535, IPFIX_FT_WPROBE_RETRANSMIT_1600_SS, 8, IPFIX_CODING_UINT, "link_retransmit_1600_ss", "wprobe link total retransmissions per packet - >800 bytes - Sum of squared samples" ++536, IPFIX_FT_WPROBE_FRAMES, 4, IPFIX_CODING_UINT, "global_frames", "wprobe global number of 802.11 frames seen" ++537, IPFIX_FT_WPROBE_PROBEREQ, 4, IPFIX_CODING_UINT, "global_probereq", "wprobe global number of 802.11 probe requests seen" diff --git a/package/libipfix/patches/120-ipfixmisc.patch b/package/libipfix/patches/120-ipfixmisc.patch new file mode 100644 index 000000000..e3f5a05c6 --- /dev/null +++ b/package/libipfix/patches/120-ipfixmisc.patch @@ -0,0 +1,27 @@ +Index: libipfix.r51/lib/Makefile.in +=================================================================== +--- libipfix.r51.orig/lib/Makefile.in 2008-08-05 15:15:23.000000000 +0200 ++++ libipfix.r51/lib/Makefile.in 2012-06-05 19:26:34.061692890 +0200 +@@ -41,7 +41,7 @@ + INCLS = -I. -I.. + CFLAGS = $(CCOPT) $(INCLS) $(DEFS) + +-TARGETS = libmisc.a libipfix.a ++TARGETS = libipfixmisc.a libipfix.a + OBJS = ipfix.o ipfix_col.o ipfix_print.o \ + ipfix_col_files.o ipfix_col_db.o @IPFIX_DB_OBJ@ @IPFIX_SSL_OBJ@ + DEPHDR = ipfix.h ipfix_def.h ipfix_fields.h ipfix_def_fokus.h ipfix_fields_fokus.h +@@ -60,11 +60,11 @@ + install: + @[ -d ${libdir} ] || (mkdir -p ${libdir}; chmod 755 ${libdir}) + $(INSTALL_DATA) libipfix.a ${libdir}/ +- $(INSTALL_DATA) libmisc.a ${libdir}/ ++ $(INSTALL_DATA) libipfixmisc.a ${libdir}/ + @[ -d ${includedir} ] || (mkdir -p ${includedir}; chmod 755 ${includedir}) + $(INSTALL_HEADER) ipfix*.h mlog.h mpoll.h ${includedir}/ + +-libmisc.a: $(MISCOBJS) Makefile ++libipfixmisc.a: $(MISCOBJS) Makefile + @rm -f $@ + $(AR) rc $@ $(MISCOBJS) + -- cgit v1.2.3