Thomas's ematch fixes for lex.
Fix more GCC signedness warnings.
This commit is contained in:
parent
f332d16924
commit
737f15f6da
9
Makefile
9
Makefile
|
|
@ -31,17 +31,10 @@ SUBDIRS=lib ip tc misc netem
|
||||||
|
|
||||||
LIBNETLINK=../lib/libnetlink.a ../lib/libutil.a
|
LIBNETLINK=../lib/libnetlink.a ../lib/libutil.a
|
||||||
|
|
||||||
all: flex_check Config
|
all: Config
|
||||||
@for i in $(SUBDIRS); \
|
@for i in $(SUBDIRS); \
|
||||||
do $(MAKE) $(MFLAGS) -C $$i; done
|
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:
|
Config:
|
||||||
sh configure $(KERNEL_INCLUDE)
|
sh configure $(KERNEL_INCLUDE)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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);
|
addattr_l(&req.n, sizeof(req), NDA_DST, &dst.data, dst.bytelen);
|
||||||
|
|
||||||
if (lla && strcmp(lla, "null")) {
|
if (lla && strcmp(lla, "null")) {
|
||||||
__u8 llabuf[16];
|
char llabuf[16];
|
||||||
int l;
|
int l;
|
||||||
|
|
||||||
l = ll_addr_a2n(llabuf, sizeof(llabuf), lla);
|
l = ll_addr_a2n(llabuf, sizeof(llabuf), lla);
|
||||||
|
|
|
||||||
|
|
@ -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++) {
|
for (i = - (plen % 2), j = 0; j < len; i += 2, j++) {
|
||||||
char vbuf[3];
|
char vbuf[3];
|
||||||
char val;
|
__u8 val;
|
||||||
|
|
||||||
vbuf[0] = i >= 0 ? p[i] : '0';
|
vbuf[0] = i >= 0 ? p[i] : '0';
|
||||||
vbuf[1] = p[i + 1];
|
vbuf[1] = p[i + 1];
|
||||||
|
|
|
||||||
|
|
@ -484,7 +484,7 @@ void update_db(int interval)
|
||||||
|
|
||||||
void server_loop(int fd)
|
void server_loop(int fd)
|
||||||
{
|
{
|
||||||
struct timeval snaptime;
|
struct timeval snaptime = { 0 };
|
||||||
struct pollfd p;
|
struct pollfd p;
|
||||||
p.fd = fd;
|
p.fd = fd;
|
||||||
p.events = p.revents = POLLIN;
|
p.events = p.revents = POLLIN;
|
||||||
|
|
@ -498,6 +498,7 @@ void server_loop(int fd)
|
||||||
int status;
|
int status;
|
||||||
int tdiff;
|
int tdiff;
|
||||||
struct timeval now;
|
struct timeval now;
|
||||||
|
|
||||||
gettimeofday(&now, NULL);
|
gettimeofday(&now, NULL);
|
||||||
tdiff = T_DIFF(now, snaptime);
|
tdiff = T_DIFF(now, snaptime);
|
||||||
if (tdiff >= scan_interval) {
|
if (tdiff >= scan_interval) {
|
||||||
|
|
@ -505,6 +506,7 @@ void server_loop(int fd)
|
||||||
snaptime = now;
|
snaptime = now;
|
||||||
tdiff = 0;
|
tdiff = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (poll(&p, 1, tdiff + scan_interval) > 0
|
if (poll(&p, 1, tdiff + scan_interval) > 0
|
||||||
&& (p.revents&POLLIN)) {
|
&& (p.revents&POLLIN)) {
|
||||||
int clnt = accept(fd, NULL, NULL);
|
int clnt = accept(fd, NULL, NULL);
|
||||||
|
|
@ -535,7 +537,8 @@ void server_loop(int fd)
|
||||||
int verify_forging(int fd)
|
int verify_forging(int fd)
|
||||||
{
|
{
|
||||||
struct ucred cred;
|
struct ucred cred;
|
||||||
int olen = sizeof(cred);
|
socklen_t olen = sizeof(cred);
|
||||||
|
|
||||||
if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, (void*)&cred, &olen) ||
|
if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, (void*)&cred, &olen) ||
|
||||||
olen < sizeof(cred))
|
olen < sizeof(cred))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
||||||
|
|
@ -369,7 +369,7 @@ void update_db(int interval)
|
||||||
|
|
||||||
void server_loop(int fd)
|
void server_loop(int fd)
|
||||||
{
|
{
|
||||||
struct timeval snaptime;
|
struct timeval snaptime = { 0 };
|
||||||
struct pollfd p;
|
struct pollfd p;
|
||||||
p.fd = fd;
|
p.fd = fd;
|
||||||
p.events = p.revents = POLLIN;
|
p.events = p.revents = POLLIN;
|
||||||
|
|
@ -422,7 +422,8 @@ void server_loop(int fd)
|
||||||
int verify_forging(int fd)
|
int verify_forging(int fd)
|
||||||
{
|
{
|
||||||
struct ucred cred;
|
struct ucred cred;
|
||||||
int olen = sizeof(cred);
|
socklen_t olen = sizeof(cred);
|
||||||
|
|
||||||
if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, (void*)&cred, &olen) ||
|
if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, (void*)&cred, &olen) ||
|
||||||
olen < sizeof(cred))
|
olen < sizeof(cred))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,7 @@ struct rtacct_data
|
||||||
|
|
||||||
unsigned long long val[256*4];
|
unsigned long long val[256*4];
|
||||||
double rate[256*4];
|
double rate[256*4];
|
||||||
__u8 signature[128];
|
char signature[128];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct rtacct_data kern_db_static;
|
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)
|
void server_loop(int fd)
|
||||||
{
|
{
|
||||||
struct timeval snaptime;
|
struct timeval snaptime = { 0 };
|
||||||
struct pollfd p;
|
struct pollfd p;
|
||||||
p.fd = fd;
|
p.fd = fd;
|
||||||
p.events = p.revents = POLLIN;
|
p.events = p.revents = POLLIN;
|
||||||
|
|
||||||
sprintf(kern_db->signature, "%d.%lu sampling_interval=%d time_const=%d",
|
sprintf(kern_db->signature,
|
||||||
getpid(), (unsigned long)random(), scan_interval/1000, time_constant/1000);
|
"%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));
|
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)
|
int verify_forging(int fd)
|
||||||
{
|
{
|
||||||
struct ucred cred;
|
struct ucred cred;
|
||||||
int olen = sizeof(cred);
|
socklen_t olen = sizeof(cred);
|
||||||
|
|
||||||
if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, (void*)&cred, &olen) ||
|
if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, (void*)&cred, &olen) ||
|
||||||
olen < sizeof(cred))
|
olen < sizeof(cred))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,8 @@
|
||||||
extern int ematch_argc;
|
extern int ematch_argc;
|
||||||
extern char **ematch_argv;
|
extern char **ematch_argv;
|
||||||
|
|
||||||
|
#define yylval ematch_lval
|
||||||
|
|
||||||
#define NEXT_EM_ARG() do { ematch_argc--; ematch_argv++; } while(0);
|
#define NEXT_EM_ARG() do { ematch_argc--; ematch_argv++; } while(0);
|
||||||
|
|
||||||
#define YY_INPUT(buf, result, max_size) \
|
#define YY_INPUT(buf, result, max_size) \
|
||||||
|
|
@ -37,27 +39,27 @@
|
||||||
|
|
||||||
%x str
|
%x str
|
||||||
|
|
||||||
%option 8bit stack warn bison-bridge noyywrap prefix="ematch_"
|
%option 8bit stack warn noyywrap prefix="ematch_"
|
||||||
%%
|
%%
|
||||||
|
|
||||||
static unsigned char *strbuf;
|
static unsigned char *strbuf;
|
||||||
static unsigned int strbuf_size;
|
static unsigned int strbuf_size;
|
||||||
static unsigned int strbuf_index;
|
static unsigned int strbuf_index;
|
||||||
|
|
||||||
static inline void strbuf_enlarge(void)
|
static void strbuf_enlarge(void)
|
||||||
{
|
{
|
||||||
strbuf_size += 512;
|
strbuf_size += 512;
|
||||||
strbuf = realloc(strbuf, strbuf_size);
|
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)
|
while (strbuf_index >= strbuf_size)
|
||||||
strbuf_enlarge();
|
strbuf_enlarge();
|
||||||
strbuf[strbuf_index++] = c;
|
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)
|
while (strbuf_index >= strbuf_size)
|
||||||
strbuf_enlarge();
|
strbuf_enlarge();
|
||||||
|
|
@ -81,8 +83,8 @@
|
||||||
|
|
||||||
<str>\" {
|
<str>\" {
|
||||||
BEGIN(INITIAL);
|
BEGIN(INITIAL);
|
||||||
yylval->b = bstr_new(strbuf, strbuf_index);
|
yylval.b = bstr_new(strbuf, strbuf_index);
|
||||||
yylval->b->quoted = 1;
|
yylval.b->quoted = 1;
|
||||||
return ATTRIBUTE;
|
return ATTRIBUTE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -132,11 +134,11 @@
|
||||||
[nN][oO][tT] return NOT;
|
[nN][oO][tT] return NOT;
|
||||||
"(" |
|
"(" |
|
||||||
")" {
|
")" {
|
||||||
return yylval->i = *yytext;
|
return yylval.i = *yytext;
|
||||||
}
|
}
|
||||||
[^ \t\r\n()]+ {
|
[^ \t\r\n()]+ {
|
||||||
yylval->b = bstr_alloc(yytext);
|
yylval.b = bstr_alloc(yytext);
|
||||||
if (yylval->b == NULL)
|
if (yylval.b == NULL)
|
||||||
return ERROR;
|
return ERROR;
|
||||||
return ATTRIBUTE;
|
return ATTRIBUTE;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,6 @@
|
||||||
%}
|
%}
|
||||||
|
|
||||||
%locations
|
%locations
|
||||||
%pure_parser
|
|
||||||
%token-table
|
%token-table
|
||||||
%error-verbose
|
%error-verbose
|
||||||
%name-prefix="ematch_"
|
%name-prefix="ematch_"
|
||||||
|
|
@ -19,7 +18,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
%{
|
%{
|
||||||
extern int yylex(YYSTYPE *, YYLTYPE *);
|
extern int ematch_lex(void);
|
||||||
extern void yyerror(char *s);
|
extern void yyerror(char *s);
|
||||||
extern struct ematch *ematch_root;
|
extern struct ematch *ematch_root;
|
||||||
extern char *ematch_err;
|
extern char *ematch_err;
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,8 @@
|
||||||
#define __TC_EMATCH_H_
|
#define __TC_EMATCH_H_
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
#include "tc_util.h"
|
#include "tc_util.h"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue