Ticket #11045: 002-use_libiptc.patch

File 002-use_libiptc.patch, 16.3 KB (added by Alfred Ganz <alfred-ganz+openwrt@…>, 5 years ago)

Modification to use only *.so libraries, upgrade to net-snmp-5.4.2.1 and iptables-1.4.10

  • iptables-snmp-0.1

    diff -urN iptables-snmp-0.1.orig/iptables-snmp.c iptables-snmp-0.1/iptables-snmp.c
    old new  
    3535#include <net-snmp/agent/net-snmp-agent-includes.h> 
    3636#include "iptables-snmp.h" 
    3737 
    38 #include "libiptc/libiptc.h" 
     38#include <libiptc/libiptc.h> 
    3939 
    4040/* For backward compatibility */ 
    4141typedef struct iptc_handle *iptc_handle_t; 
     
    8383            free(data->tables[i]); 
    8484             
    8585            if (data->t[i] != NULL) { 
    86               iptc_free(&(data->t[i])); 
     86              iptc_free(data->t[i]); 
    8787            } 
    8888        } 
    8989        free(data->tables); 
     
    379379            c->table++; 
    380380            if (c->ctx->tables[c->table] == NULL) return NULL; 
    381381             
    382             c->chainname = iptc_first_chain(&(c->ctx->t[c->table])); 
     382            c->chainname = iptc_first_chain(c->ctx->t[c->table]); 
    383383            c->chain = 0; 
    384384        } else { 
    385             c->chainname = iptc_next_chain(&(c->ctx->t[c->table])); 
     385            c->chainname = iptc_next_chain(c->ctx->t[c->table]); 
    386386            c->chain++; 
    387387        } 
    388388    } while (c->chainname == NULL); 
     
    523523                 
    524524                const char *cn; 
    525525                int i; 
    526                 for (cn = iptc_first_chain(&(ctx->t[table])), i=0 ; cn ; 
    527                      cn = iptc_next_chain(&(ctx->t[table])), i++) { 
     526                for (cn = iptc_first_chain(ctx->t[table]), i=0 ; cn ; 
     527                     cn = iptc_next_chain(ctx->t[table]), i++) { 
    528528                    if (i == chain) { 
    529529                        if (table_info->colnum == C_CHAIN_NAME) { 
    530530                            snmp_set_var_typed_value(var, ASN_OCTET_STR, 
     
    535535                            struct ipt_counters cnt; 
    536536                            unsigned int isbuiltin = 1; 
    537537                             
    538                             const char *pol =  
    539                               iptc_get_policy(cn, &cnt, &(ctx->t[table])); 
     538                            char *pol =  
     539                              (char *)iptc_get_policy(cn, &cnt, ctx->t[table]); 
    540540                             
    541541                            if (!pol) { 
    542542                              isbuiltin = 0; 
     
    544544 
    545545                            switch (table_info->colnum) { 
    546546                            case C_CHAIN_POLICY: 
    547                                 if (!pol) { 
    548                                   // this is not a built in chain, there is no policy 
    549                                   break; 
    550                                 } 
    551                                 snmp_set_var_typed_value(var, ASN_OCTET_STR, 
     547                                  if (!isbuiltin) { 
     548                                        pol = "none"; 
     549                                  } 
     550                                  snmp_set_var_typed_value(var, ASN_OCTET_STR, 
    552551                                                         (unsigned char *) pol,  
    553552                                                         strlen(pol)); 
    554                                 break; 
     553                                  break; 
    555554                            case C_CHAIN_OCTETS: 
    556                                 if (isbuiltin) { 
    557                                   // this is a built in chain, display 
    558                                   // counter 
    559                                    
     555                                  if (!isbuiltin) { 
     556                                        cnt.bcnt = 0; 
     557                                  } 
    560558                                  c64.low = 0xffffffff & cnt.bcnt; 
    561559                                  c64.high = 0xffffffff & (cnt.bcnt >> 32); 
    562560                                  snmp_set_var_typed_value(var, ASN_COUNTER64, 
    563561                                                           (void*) &(c64), 
    564562                                                           sizeof(c64)); 
    565                                    
    566                                 } 
    567                                 break; 
     563                                  break; 
    568564                            case C_CHAIN_PACKETS: 
    569                                 if (isbuiltin) { 
    570                                     // this is a built in chain, display 
    571                                     // counter 
    572                                    
     565                                  if (!isbuiltin) { 
     566                                        cnt.pcnt = 0; 
     567                                  } 
    573568                                  c64.low = 0xffffffff & cnt.pcnt; 
    574569                                  c64.high = 0xffffffff & (cnt.pcnt >> 32); 
    575570                                  snmp_set_var_typed_value(var, ASN_COUNTER64, 
    576571                                                           (void*) &(c64), 
    577572                                                           sizeof(c64)); 
    578  
    579                                 } 
    580                                 break; 
     573                                  break; 
    581574                            } 
    582575                        } 
    583576                        break; 
     
    655648                    c->table++; 
    656649                    if (c->ctx->tables[c->table] == NULL) return NULL; 
    657650 
    658                     c->chainname = iptc_first_chain(&(c->ctx->t[c->table])); 
     651                    c->chainname = iptc_first_chain(c->ctx->t[c->table]); 
    659652                    c->chain = 0; 
    660653                } else { 
    661                     c->chainname = iptc_next_chain(&(c->ctx->t[c->table])); 
     654                    c->chainname = iptc_next_chain(c->ctx->t[c->table]); 
    662655                    c->chain++; 
    663656                } 
    664657            } while (c->chainname == NULL); 
    665658 
    666             c->e = iptc_first_rule(c->chainname, &(c->ctx->t[c->table])); 
     659            c->e = iptc_first_rule(c->chainname, c->ctx->t[c->table]); 
    667660            c->rule = 0; 
    668661        } else { 
    669             c->e = iptc_next_rule(c->e, &(c->ctx->t[c->table])); 
     662            c->e = iptc_next_rule(c->e, c->ctx->t[c->table]); 
    670663            c->rule++; 
    671664        } 
    672665    } while (c->e == NULL); 
     
    868861            case R_CHAIN_NAME_INDEX: { 
    869862                const char *cn; 
    870863                int i; 
    871                 for (cn = iptc_first_chain(&(ctx->t[table])), i=0 ; cn ; 
    872                      cn = iptc_next_chain(&(ctx->t[table])), i++) { 
     864                for (cn = iptc_first_chain(ctx->t[table]), i=0 ; cn ; 
     865                     cn = iptc_next_chain(ctx->t[table]), i++) { 
    873866                    if (i == chain) { 
    874867                        snmp_set_var_typed_value(var, ASN_OCTET_STR, 
    875868                                                 (unsigned char *) cn,  
     
    890883                const char *cn; 
    891884                int i; 
    892885 
    893                 for (cn = iptc_first_chain(&(ctx->t[table])), i=0 ; cn ; 
    894                      cn = iptc_next_chain(&(ctx->t[table])), i++) { 
     886                for (cn = iptc_first_chain(ctx->t[table]), i=0 ; cn ; 
     887                     cn = iptc_next_chain(ctx->t[table]), i++) { 
    895888/*                  printf("%d %d\n", i, chain); */ 
    896889                    if (i == chain) { 
    897890                        struct ipt_counters *cnt =  
    898                           iptc_read_counter(cn, rule+1, &(ctx->t[table])); 
     891                          iptc_read_counter(cn, rule+1, ctx->t[table]); 
    899892                        struct counter64 c64; 
    900893 
    901894 
     
    950943                n -= i; 
    951944 
    952945                /* Print target name */  
    953                 target_name = iptc_get_target(e, &(ctx->t[table])); 
     946                target_name = iptc_get_target(e, ctx->t[table]); 
    954947 
    955948                if (target_name && *target_name) { 
    956949                    i = snprintf(buf + sizeof(buf) - n, n, 
     
    11591152 
    11601153    table_info->min_column = 1; 
    11611154    table_info->max_column = 7; 
     1155    iinfo->make_data_context = chains_make_data_context; 
    11621156    iinfo->get_first_data_point = chains_get_first_names; 
    11631157    iinfo->get_next_data_point  = chains_get_next_names; 
    11641158    iinfo->free_loop_context_at_end = chains_free_loop_context_at_end; 
  • iptables-snmp-0.1

    diff -urN iptables-snmp-0.1.orig/iptables-snmp.h iptables-snmp-0.1/iptables-snmp.h
    old new  
     1/*  
     2 *  $Id$ 
     3 *  
     4 *  This file is part of iptables-snmp - using SNMP to read data from linux 
     5 *  iptables 
     6 *  
     7 *  iptables-snmp is copyrighted software:  
     8 *      (c) 2003 by Peter Stamfest <peter@stamfest.at> 
     9 *  
     10 *  iptables-snmp is free software; you can redistribute it and/or modify 
     11 *  it under the terms of the GNU General Public License as published by 
     12 *  the Free Software Foundation; either version 2 of the License, or 
     13 *  (at your option) any later version. 
     14 *  
     15 *  iptables-snmp is distributed in the hope that it will be useful, 
     16 *  but WITHOUT ANY WARRANTY; without even the implied warranty of 
     17 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
     18 *  GNU General Public License for more details. 
     19 * 
     20 *  You should have received a copy of the GNU General Public License 
     21 *  along with iptables-snmp; if not, write to the Free Software 
     22 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
     23 * 
     24 *  Note: See the file COPYING for the GNU General Public License and some 
     25 *  extensions to it designed to protect the OID space of Peter Stamfest from 
     26 *  becoming polluted.  
     27 */ 
     28#ifndef IPTABLES_SNMP_H_INCLUDED 
     29#define IPTABLES_SNMP_H_INCLUDED 
     30 
     31/* init function */ 
     32void init_iptables(void); 
     33 
     34#define STAMFEST_OID            1,3,6,1,4,1,12806 
     35 
     36/* USE_ENTERPRISE_OID may get passed on the commandline (-D) */ 
     37#ifndef USE_ENTERPRISE_OID 
     38#  define USE_ENTERPRISE_OID    STAMFEST_OID 
     39#endif 
     40 
     41#define BASE_OID                USE_ENTERPRISE_OID,6,1 
     42 
     43#define AGENT_VERSION_INDEX     1 
     44#define IPTABLES_VERSION_INDEX  2 
     45 
     46/* the chains table */ 
     47 
     48#define C_CHAIN_INDEX           1 
     49#define C_TABLE_INDEX           2 
     50#define C_CHAIN_NAME            3 
     51#define C_TABLE_NAME            4 
     52#define C_CHAIN_POLICY          5 
     53#define C_CHAIN_OCTETS          6 
     54#define C_CHAIN_PACKETS         7 
     55 
     56/* the rules table */ 
     57 
     58#define R_RULE_INDEX            1 
     59#define R_CHAIN_INDEX           2 
     60#define R_TABLE_INDEX           3 
     61#define R_CHAIN_NAME_INDEX      4 
     62#define R_TABLE_NAME_INDEX      5 
     63#define R_OCTETS_INDEX          6 
     64#define R_PACKETS_INDEX         7 
     65#define R_RULE_SHORT_INDEX      8 
     66#define R_SRC_IPADDR_INDEX      9 
     67#define R_SRC_MASK_INDEX        10 
     68#define R_DST_IPADDR_INDEX      11 
     69#define R_DST_MASK_INDEX        12 
     70 
     71#define R_MAX                   12 
     72 
     73#endif /* IPTABLES_SNMP_H_INCLUDED */ 
  • iptables-snmp-0.1

    diff -urN iptables-snmp-0.1.orig/Makefile.in iptables-snmp-0.1/Makefile.in
    old new  
    4545INSTALL_PREFIX  = 
    4646 
    4747NAME            =       iptables-snmp 
    48 AGENT_VERSION   =       0.1 
     48AGENT_VERSION   =       0.1-002 
    4949 
    50 IPTABLES        =       1.3.3 
     50# How could this be mechanically determined from iptables 
     51IPTABLES        =       1.4.10 
    5152 
    5253STAMFEST_OID    =       1,3,6,1,4,1,12806 
    5354 
    5455SRCS            =       iptables-snmp.c 
    5556OBJS            =       $(SRCS:.c=.o) 
    56 LDFLAGS         =       -L. -liptc 
     57L_SNMP_FLAGS    =       -lnetsnmp -lnetsnmphelpers -lnetsnmpagent -lnetsnmpmibs 
     58L_LDFLAGS       =       -lip4tc $(L_SNMP_FLAGS) 
    5759 
    5860NETFILTER       =       \"$(IPTABLES)\" 
    5961 
     
    6365 
    6466DFLAGS          =       -fPIC 
    6567 
    66 OTHER           =       -Iinclude -DIPTABLES_VERSION=$(NETFILTER) -DUSE_ENTERPRISE_OID=$(STAMFEST_OID) -DAGENT_VERSION=\"$(AGENT_VERSION)\" 
     68OTHER           =       -DIPTABLES_VERSION=$(NETFILTER) -DUSE_ENTERPRISE_OID=$(STAMFEST_OID) -DAGENT_VERSION=\"$(AGENT_VERSION)\" 
    6769 
    6870all: iptables-snmp.so 
    6971 
    7072iptables-snmp.so: $(OBJS) Makefile 
    71         $(CC) $(CFLAGS) $(OTHER) $(DFLAGS) -shared  -o $@ $(OBJS) $(LDFLAGS) 
     73        $(CC) $(DFLAGS) -shared -o $@ $(OBJS) $(L_LDFLAGS) $(LDFLAGS) 
    7274 
    7375libiptc.a: $(LIBIPTC_OBJS) Makefile 
    7476        $(AR) rc $@ $(LIBIPTC_OBJS) 
  • mibs/IPTABLES.MIB

    diff -urN iptables-snmp-0.1.orig/mibs/IPTABLES.MIB iptables-snmp-0.1/mibs/IPTABLES.MIB
    old new  
    3838 
    3939IMPORTS 
    4040    MODULE-IDENTITY, OBJECT-TYPE, 
     41    -- next missing imports added by AG 
     42    Integer32, Counter64, IpAddress, 
    4143    Counter32                             FROM SNMPv2-SMI 
     44    -- next missing import added by AG 
     45    DisplayString                         FROM SNMPv2-TC 
     46 
    4247    stamfestMIB                           FROM STAMFEST-MIB; 
    4348 
    4449iptablesMIB MODULE-IDENTITY 
    45     LAST-UPDATED "200303190800Z" 
     50    LAST-UPDATED "201202231600Z" 
     51    -- LAST-UPDATED "200303190800Z" 
    4652    ORGANIZATION "Peter Stamfest - Unix, Networking and Computing Consultant" 
    4753    CONTACT-INFO "peter@stamfest.at" 
    4854    DESCRIPTION 
    4955      "A MIB module describing linux iptables" 
     56     REVISION   "201202231600Z" 
     57     DESCRIPTION 
     58       "Modified by AG to adhere to standards and 
     59        to reflect the latest version of libiptc." 
    5060    ::= { stamfestMIB 1 } 
    5161 
    5262iptablesMIBObjects OBJECT IDENTIFIER ::= { iptablesMIB 1 } 
     
    7787---------------------------------------------------------------------- 
    7888 
    7989iptableNamesTable OBJECT-TYPE 
    80     SYNTAX     SEQUENCE OF iptableNamesEntry 
     90    -- next changed to SEQUENCE name by AG 
     91    SYNTAX     SEQUENCE OF IptableNamesEntry 
    8192    MAX-ACCESS  not-accessible 
    8293    STATUS      current 
    8394    DESCRIPTION 
     
    100111    } 
    101112 
    102113tableIndex OBJECT-TYPE 
    103     SYNTAX      Integer32 
     114    -- next range added by AG 
     115    SYNTAX      Integer32 (0..65535) 
    104116    MAX-ACCESS  read-only 
    105117    STATUS      current 
    106118    DESCRIPTION 
     
    123135---------------------------------------------------------------------- 
    124136 
    125137iptableChains OBJECT-TYPE 
    126     SYNTAX     SEQUENCE OF iptableChainsEntry 
     138    -- next changed to SEQUENCE name by AG 
     139    SYNTAX     SEQUENCE OF IptableChainsEntry 
    127140    MAX-ACCESS  not-accessible 
    128141    STATUS      current 
    129142    DESCRIPTION 
     
    131144    ::= { iptablesMIBObjects 2 } 
    132145 
    133146iptableChainsEntry OBJECT-TYPE 
    134     SYNTAX IptableRulesEntry 
     147    -- next changed to chains SEQUENCE name by AG 
     148    SYNTAX IptableChainsEntry 
    135149    MAX-ACCESS  not-accessible 
    136150    STATUS      current 
    137151    DESCRIPTION 
    138152        "An entry containing and mapping of table and chain names." 
    139     INDEX   { tableIndex } 
     153    -- next changed to defined object by AG 
     154    INDEX   { chainIndex } 
    140155    ::= { iptableChains 1 } 
    141156 
    142157IptableChainsEntry ::= 
     
    144159       chainIndex       Integer32, 
    145160       tableIndexC      Integer32, 
    146161       chainName        DisplayString, 
    147        chainPolicy      DisplayString 
    148        chainOctets      Integer64, 
    149        chainPackets     Integer64 
     162       -- next added by AG 
     163       chainTableNameC DisplayString, 
     164       -- next comma added by AG 
     165       chainPolicy      DisplayString, 
     166       -- next 2 changed to Counter64 by AG 
     167       chainOctets      Counter64, 
     168       chainPackets     Counter64 
     169 
    150170    } 
    151171 
    152172chainIndex OBJECT-TYPE 
    153     SYNTAX      Integer32 
     173    -- next range added by AG 
     174    SYNTAX      Integer32 (0..65535) 
    154175    MAX-ACCESS  read-only 
    155176    STATUS      current 
    156177    DESCRIPTION 
     
    190211    ::= { iptableChainsEntry 5 } 
    191212 
    192213chainOctets OBJECT-TYPE 
    193     SYNTAX      Integer64 
     214    -- next changed to Counter64 by AG 
     215    SYNTAX      Counter64 
    194216    MAX-ACCESS  read-only 
    195217    STATUS      current 
    196218    DESCRIPTION 
     
    198220    ::= { iptableChainsEntry 6 } 
    199221 
    200222chainPackets OBJECT-TYPE 
    201     SYNTAX      Integer64 
     223    -- next changed to Counter64 by AG 
     224    SYNTAX      Counter64 
    202225    MAX-ACCESS  read-only 
    203226    STATUS      current 
    204227    DESCRIPTION 
     
    212235---------------------------------------------------------------------- 
    213236 
    214237iptableRules OBJECT-TYPE 
    215     SYNTAX     SEQUENCE OF iptableRulesEntry 
     238    -- next changed to SEQUENCE name by AG 
     239    SYNTAX     SEQUENCE OF IptableRulesEntry 
    216240    MAX-ACCESS  not-accessible 
    217241    STATUS      current 
    218242    DESCRIPTION 
     
    225249    STATUS      current 
    226250    DESCRIPTION 
    227251        "An entry containing and mapping of table and chain names." 
    228     INDEX   { tableIndex } 
     252    -- next changed to defined object by AG 
     253    INDEX   { tableIndexR } 
    229254    ::= { iptableRules 1 } 
    230255 
    231256IptableRulesEntry ::= 
     
    235260       tableIndexR      Integer32, 
    236261       chainNameR       DisplayString, 
    237262       chainTableNameR  DisplayString, 
    238        ruleOctets       Integer64, 
    239        rulePackets      Integer64, 
    240        chainRule        DisplayString 
     263       -- next 2 changed to Counter64 by AG 
     264       ruleOctets       Counter64, 
     265       rulePackets      Counter64, 
     266       -- next comma added by AG 
     267       chainRule        DisplayString, 
    241268       sourceIP         IpAddress, 
    242269       sourceMask       IpAddress, 
    243270       destinationIP    IpAddress, 
     
    261288    ::= { iptableRulesEntry 2 } 
    262289 
    263290tableIndexR OBJECT-TYPE 
    264     SYNTAX      Integer32 
     291    -- next range added by AG 
     292    SYNTAX      Integer32 (0..65535) 
    265293    MAX-ACCESS  read-only 
    266294    STATUS      current 
    267295    DESCRIPTION 
     
    285313    ::= { iptableRulesEntry 5 } 
    286314 
    287315ruleOctets OBJECT-TYPE 
    288     SYNTAX      Integer64 
     316    -- next changed to Counter64 by AG 
     317    SYNTAX      Counter64 
    289318    MAX-ACCESS  read-only 
    290319    STATUS      current 
    291320    DESCRIPTION 
     
    293322    ::= { iptableRulesEntry 6 } 
    294323 
    295324rulePackets OBJECT-TYPE 
    296     SYNTAX      Integer64 
     325    -- next changed to Counter64 by AG 
     326    SYNTAX      Counter64 
    297327    MAX-ACCESS  read-only 
    298328    STATUS      current 
    299329    DESCRIPTION 
     
    350380 
    351381ip6tablesMIBObjects OBJECT IDENTIFIER ::= { iptablesMIB 2 } 
    352382 
    353 END 
    354  No newline at end of file 
     383END 
  • mibs/STAMFEST.MIB

    diff -urN iptables-snmp-0.1.orig/mibs/STAMFEST.MIB iptables-snmp-0.1/mibs/STAMFEST.MIB
    old new  
    2929---------------------------------------------------------------------- 
    3030 
    3131IMPORTS 
    32      enterprises                           FROM SNMPv2-SMI; 
     32     -- enterprises                        FROM SNMPv2-SMI; 
     33     -- Modified by AG 
     34     enterprises, MODULE-IDENTITY           FROM SNMPv2-SMI; 
    3335  
    3436stamfestTOP MODULE-IDENTITY 
    35      LAST-UPDATED "200303131352Z" 
     37     -- LAST-UPDATED "200303131352Z" 
     38     LAST-UPDATED "201202231311Z" 
    3639     ORGANIZATION "Peter Stamfest - Unix, Networking and Computing Consultant" 
    3740     CONTACT-INFO 
    3841       "peter@stamfest.at" 
     42     -- Added by AG 
    3943     DESCRIPTION 
    4044       "The top OID assigned to Peter Stamfest. Sub OIDs get used for LDAP 
    4145        and SNMP. Note that all MIBs get collected below stamfestMIB 
    4246        (not stamfestTOP)" 
     47     REVISION   "201202231311Z" 
     48     DESCRIPTION 
     49       "Modified by AG to adhere to standards" 
    4350     ::= { enterprises 12806 } 
    4451 
    45 stamfestMIB MODULE-IDENTITY 
    46      LAST-UPDATED "200303131352Z" 
    47      ORGANIZATION "Peter Stamfest - Unix, Networking and Computing Consultant" 
    48      CONTACT-INFO 
    49        "peter@stamfest.at" 
    50      DESCRIPTION 
    51        "A common MIB base for SNMP MIBs released by Peter Stamfest" 
    52      ::= { stamfestTOP 6 } 
     52-- Modified by AG 
     53-- stamfestMIB MODULE-IDENTITY 
     54--     LAST-UPDATED "200303131352Z" 
     55--     ORGANIZATION "Peter Stamfest - Unix, Networking and Computing Consultant" 
     56--     CONTACT-INFO 
     57--       "peter@stamfest.at" 
     58--     DESCRIPTION 
     59--       "A common MIB base for SNMP MIBs released by Peter Stamfest" 
     60--     ::= { stamfestTOP 6 } 
     61stamfestMIB OBJECT IDENTIFIER ::= { stamfestTOP 6 } 
    5362 
    5463END 
    5564