]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
Thomas's ematch fixes for lex.
authorshemminger <shemminger>
Fri, 8 Jul 2005 22:08:47 +0000 (22:08 +0000)
committershemminger <shemminger>
Fri, 8 Jul 2005 22:08:47 +0000 (22:08 +0000)
Fix more GCC signedness warnings.

Makefile
ip/ipneigh.c
ip/xfrm_state.c
misc/ifstat.c
misc/nstat.c
misc/rtacct.c
tc/emp_ematch.l
tc/emp_ematch.y
tc/m_ematch.h

index 6b1edafd38c2f8b5fa8a7c8688569e2ffb8197cc..ac58cd97e52f2287198599541c21c0683562b6e2 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -31,17 +31,10 @@ SUBDIRS=lib ip tc misc netem
 
 LIBNETLINK=../lib/libnetlink.a ../lib/libutil.a
 
-all: flex_check Config
+all: Config
        @for i in $(SUBDIRS); \
        do $(MAKE) $(MFLAGS) -C $$i; done
 
-flex_check:
-       @if [ -z "`flex -h | grep '^Usage: flex '`" ]; then \
-               echo "GNU flex required, please install it."; \
-               echo " see http://lex.sourceforge.net"; \
-               exit 1; \
-       fi
-
 Config:
        sh configure $(KERNEL_INCLUDE)
 
index e8ab29121bfd5d61304ce78a9c8ca6660a07a28a..5346b8bd7b6eba403a87da9ca62f887095262fb7 100644 (file)
@@ -166,7 +166,7 @@ static int ipneigh_modify(int cmd, int flags, int argc, char **argv)
        addattr_l(&req.n, sizeof(req), NDA_DST, &dst.data, dst.bytelen);
 
        if (lla && strcmp(lla, "null")) {
-               __u8 llabuf[16];
+               char llabuf[16];
                int l;
 
                l = ll_addr_a2n(llabuf, sizeof(llabuf), lla);
index 6757c741e3c47b45128ba1a6150e3ffbafd4b870..c3a91140b65e1c69aba07b1ab3d3f3206001eb73 100644 (file)
@@ -140,7 +140,7 @@ static int xfrm_algo_parse(struct xfrm_algo *alg, enum xfrm_attr_type_t type,
 
                for (i = - (plen % 2), j = 0; j < len; i += 2, j++) {
                        char vbuf[3];
-                       char val;
+                       __u8 val;
 
                        vbuf[0] = i >= 0 ? p[i] : '0';
                        vbuf[1] = p[i + 1];
index 1379a8115b172acbe0ff7bcd86d081f279c83199..4b879940ec3d3af59847481b124d7e7c419efb22 100644 (file)
@@ -484,7 +484,7 @@ void update_db(int interval)
 
 void server_loop(int fd)
 {
-       struct timeval snaptime;
+       struct timeval snaptime = { 0 };
        struct pollfd p;
        p.fd = fd;
        p.events = p.revents = POLLIN;
@@ -498,6 +498,7 @@ void server_loop(int fd)
                int status;
                int tdiff;
                struct timeval now;
+
                gettimeofday(&now, NULL);
                tdiff = T_DIFF(now, snaptime);
                if (tdiff >= scan_interval) {
@@ -505,6 +506,7 @@ void server_loop(int fd)
                        snaptime = now;
                        tdiff = 0;
                }
+
                if (poll(&p, 1, tdiff + scan_interval) > 0
                    && (p.revents&POLLIN)) {
                        int clnt = accept(fd, NULL, NULL);
@@ -535,7 +537,8 @@ void server_loop(int fd)
 int verify_forging(int fd)
 {
        struct ucred cred;
-       int olen = sizeof(cred);
+       socklen_t olen = sizeof(cred);
+
        if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, (void*)&cred, &olen) ||
            olen < sizeof(cred))
                return -1;
index f2887ec142fddea948d390aa02fa6a5e9ffc0044..fc4b03bd66bb10f329eb38db77e3cbeba6ab585f 100644 (file)
@@ -369,7 +369,7 @@ void update_db(int interval)
 
 void server_loop(int fd)
 {
-       struct timeval snaptime;
+       struct timeval snaptime = { 0 };
        struct pollfd p;
        p.fd = fd;
        p.events = p.revents = POLLIN;
@@ -422,7 +422,8 @@ void server_loop(int fd)
 int verify_forging(int fd)
 {
        struct ucred cred;
-       int olen = sizeof(cred);
+       socklen_t olen = sizeof(cred);
+
        if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, (void*)&cred, &olen) ||
            olen < sizeof(cred))
                return -1;
index 5c6748b9cdfddf72b3bfad7908899d275bcdea64..0d8ff7b9d5d78c75d5cd80ffeb550b2a4434bf84 100644 (file)
@@ -68,7 +68,7 @@ struct rtacct_data
 
        unsigned long long      val[256*4];
        double                  rate[256*4];
-       __u8                    signature[128];
+       char                    signature[128];
 };
 
 struct rtacct_data kern_db_static;
@@ -363,13 +363,15 @@ void pad_kern_table(struct rtacct_data *dat, __u32 *ival)
 
 void server_loop(int fd)
 {
-       struct timeval snaptime;
+       struct timeval snaptime = { 0 };
        struct pollfd p;
        p.fd = fd;
        p.events = p.revents = POLLIN;
 
-       sprintf(kern_db->signature, "%d.%lu sampling_interval=%d time_const=%d",
-               getpid(), (unsigned long)random(), scan_interval/1000, time_constant/1000);
+       sprintf(kern_db->signature, 
+               "%u.%lu sampling_interval=%d time_const=%d",
+               (unsigned) getpid(), (unsigned long)random(), 
+               scan_interval/1000, time_constant/1000);
 
        pad_kern_table(kern_db, read_kern_table(kern_db->ival));
 
@@ -411,7 +413,8 @@ void server_loop(int fd)
 int verify_forging(int fd)
 {
        struct ucred cred;
-       int olen = sizeof(cred);
+       socklen_t olen = sizeof(cred);
+
        if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, (void*)&cred, &olen) ||
            olen < sizeof(cred))
                return -1;
index 80ab0da9c2bc3a41c065e29ff0ceec79133b8f99..70cdb9a615f8de0ee72dee2a79d265418064858e 100644 (file)
@@ -5,6 +5,8 @@
  extern int ematch_argc;
  extern char **ematch_argv;
 
+ #define yylval ematch_lval
+
  #define NEXT_EM_ARG() do { ematch_argc--; ematch_argv++; } while(0);
 
  #define YY_INPUT(buf, result, max_size)                               \
 
 %x str
 
-%option 8bit stack warn bison-bridge noyywrap prefix="ematch_"
+%option 8bit stack warn noyywrap prefix="ematch_"
 %%
 
  static unsigned char *strbuf;
  static unsigned int strbuf_size;
  static unsigned int strbuf_index;
 
- static inline void strbuf_enlarge(void)
+ static void strbuf_enlarge(void)
  {
        strbuf_size += 512;
        strbuf = realloc(strbuf, strbuf_size);
  }
 
- static inline void strbuf_append_char(unsigned char c)
+ static void strbuf_append_char(unsigned char c)
  {
        while (strbuf_index >= strbuf_size)
                strbuf_enlarge();
        strbuf[strbuf_index++] = c;
  }
 
- static inline void strbuf_append_charp(unsigned char *s)
+ static void strbuf_append_charp(unsigned char *s)
  {
        while (strbuf_index >= strbuf_size)
                strbuf_enlarge();
@@ -81,8 +83,8 @@
 
 <str>\"                                        {
                                                BEGIN(INITIAL);
-                                               yylval->b = bstr_new(strbuf, strbuf_index);
-                                               yylval->b->quoted = 1;
+                                               yylval.b = bstr_new(strbuf, strbuf_index);
+                                               yylval.b->quoted = 1;
                                                return ATTRIBUTE;
                                        }
 
 [nN][oO][tT]                           return NOT;
 "("                                    |
 ")"                                    {
-                                               return yylval->i = *yytext;
+                                               return yylval.i = *yytext;
                                        }
 [^ \t\r\n()]+                          {
-                                               yylval->b = bstr_alloc(yytext);
-                                               if (yylval->b == NULL)
+                                               yylval.b = bstr_alloc(yytext);
+                                               if (yylval.b == NULL)
                                                        return ERROR;
                                                return ATTRIBUTE;
                                        }
index b4e4a3e2d08ec633eed7599a8dabf102f6b83448..e8d1671c22e68b0f291e360343e6d60449906a1e 100644 (file)
@@ -7,7 +7,6 @@
 %}
 
 %locations
-%pure_parser
 %token-table
 %error-verbose
 %name-prefix="ematch_"
@@ -19,7 +18,7 @@
 }
 
 %{
- extern int yylex(YYSTYPE *, YYLTYPE *);
+ extern int ematch_lex(void);
  extern void yyerror(char *s);
  extern struct ematch *ematch_root;
  extern char *ematch_err;
index 67db7519f32805c9622fbef9b405458b903b9355..ed98446168da4bf2babf43f51df41b7e3d1ae567 100644 (file)
@@ -2,6 +2,8 @@
 #define __TC_EMATCH_H_
 
 #include <ctype.h>
+#include <stdlib.h>
+#include <string.h>
 
 #include "utils.h"
 #include "tc_util.h"