Changeset 32029


Ignore:
Timestamp:
May 13, 2017, 9:32:09 AM (11 days ago)
Author:
brainslayer
Message:

smaller codesize

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/router/conntrack/notifier.c

    r22376 r32029  
    2727#include <string.h>
    2828#include <bcmnvram.h>
     29#include <unistd.h>
    2930
    3031typedef struct linkedlist {
     
    8081}
    8182
    82 void nextline(FILE * fp) // skip current line and goto next line
    83 {
    84         while (1) {
    85                 int c = getc(fp);
    86                 if (c == 0xa)
    87                         return;
    88                 if (c == EOF)
    89                         return;
    90         }
    91 }
    92 
    93 void getword(FILE * in, char *val) //read a word which is separated by spaces, so wait for the first non space character and end if the first occuring space
    94 {
    95         int c = 0;
    96         while (1) {
    97                 int v = getc(in);
    98                 if (v == EOF)
    99                         return;
    100                 if (v == 0xa)
    101                         break;
    102                 if (v == 0x20 && c == 0)
    103                         continue;
    104                 if (v == 0x20)
    105                         break;
    106                 val[c++] = v;
    107         }
    108         val[c++] = 0;
    109 }
    11083/*
    11184 * sends a email with the detailed connection statistic per port. this requires a modified sendmail command from busybox. the original one is buggy and does not work with alot of email servers like exim, so we modified
     
    183156        }
    184157        while (1) {
    185                 unsigned char proto[64];
    186                 unsigned char dummy[64];
    187                 unsigned char dummy2[64];
    188                 unsigned char p2[64];
    189                 unsigned char p3[64];
    190                 unsigned char state[64];
    191                 unsigned char src[64];
    192                 unsigned char dst[64];
    193                 unsigned char sport[64];
    194                 unsigned char dport[64];
     158                char proto[64];
     159                char state[64];
     160                char src[64];
     161                char dst[64];
     162                char sport[64];
     163                char dport[64];
    195164                if (nf) { //nf_conntrack has 2 fields more
    196                         getword(fp, dummy);
    197                         getword(fp, dummy2);
    198                         getword(fp, proto);
    199                         getword(fp, p2);
    200                         getword(fp, p3);
    201                         getword(fp, state);
    202                         getword(fp, src);
    203                         getword(fp, dst);
    204                         getword(fp, sport);
    205                         getword(fp, dport);
     165                        fscanf(fp,"%*s %*s %s %*s %*s %s %s %s %s %s",proto,state,src,dst,sport,dport);
    206166                } else {
    207                         getword(fp, proto);
    208                         getword(fp, p2);
    209                         getword(fp, p3);
    210                         getword(fp, state);
    211                         getword(fp, src);
    212                         getword(fp, dst);
    213                         getword(fp, sport);
    214                         getword(fp, dport);
     167                        fscanf(fp,"%s %*s %*s %s %s %s %s %s",proto,state,src,dst,sport,dport);
     168
    215169                }
    216170                if (feof(fp))
     
    223177                        addEntry(&total, &state[4], "0", 1);
    224178                }
    225                 nextline(fp);
    226179        }
    227180        fclose(fp);
Note: See TracChangeset for help on using the changeset viewer.