PR/25365: HIROSE yuuji: ipf 4.1.1 fails to parse ipv6 address in fastroute
destination. Patch from darren applied.
This commit is contained in:
parent
68cb92eb3b
commit
e786da0edd
27
dist/ipf/tools/ipf_y.y
vendored
27
dist/ipf/tools/ipf_y.y
vendored
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: ipf_y.y,v 1.3 2004/04/09 20:39:22 jwise Exp $ */
|
/* $NetBSD: ipf_y.y,v 1.4 2004/05/09 03:53:23 christos Exp $ */
|
||||||
|
|
||||||
%{
|
%{
|
||||||
#include "ipf.h"
|
#include "ipf.h"
|
||||||
@ -477,11 +477,22 @@ dup: IPFY_DUPTO name
|
|||||||
{ strncpy(fr->fr_dif.fd_ifname, $2, sizeof(fr->fr_dif.fd_ifname));
|
{ strncpy(fr->fr_dif.fd_ifname, $2, sizeof(fr->fr_dif.fd_ifname));
|
||||||
free($2);
|
free($2);
|
||||||
}
|
}
|
||||||
| IPFY_DUPTO name ':' hostname
|
| IPFY_DUPTO name duptoseparator hostname
|
||||||
{ strncpy(fr->fr_dif.fd_ifname, $2, sizeof(fr->fr_dif.fd_ifname));
|
{ strncpy(fr->fr_dif.fd_ifname, $2, sizeof(fr->fr_dif.fd_ifname));
|
||||||
fr->fr_dif.fd_ip = $4;
|
fr->fr_dif.fd_ip = $4;
|
||||||
|
yyexpectaddr = 0;
|
||||||
free($2);
|
free($2);
|
||||||
}
|
}
|
||||||
|
| IPFY_DUPTO name duptoseparator YY_IPV6
|
||||||
|
{ strncpy(fr->fr_dif.fd_ifname, $2, sizeof(fr->fr_dif.fd_ifname));
|
||||||
|
bcopy(&$4, &fr->fr_dif.fd_ip6, sizeof(fr->fr_dif.fd_ip6));
|
||||||
|
yyexpectaddr = 0;
|
||||||
|
free($2);
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
duptoseparator:
|
||||||
|
':' { yyexpectaddr = 1; yycont = &yyexpectaddr; resetaddr(); }
|
||||||
;
|
;
|
||||||
|
|
||||||
froute: IPFY_FROUTE { fr->fr_flags |= FR_FASTROUTE; }
|
froute: IPFY_FROUTE { fr->fr_flags |= FR_FASTROUTE; }
|
||||||
@ -491,9 +502,16 @@ proute: routeto name
|
|||||||
{ strncpy(fr->fr_tif.fd_ifname, $2, sizeof(fr->fr_tif.fd_ifname));
|
{ strncpy(fr->fr_tif.fd_ifname, $2, sizeof(fr->fr_tif.fd_ifname));
|
||||||
free($2);
|
free($2);
|
||||||
}
|
}
|
||||||
| routeto name ':' hostname
|
| routeto name duptoseparator hostname
|
||||||
{ strncpy(fr->fr_tif.fd_ifname, $2, sizeof(fr->fr_tif.fd_ifname));
|
{ strncpy(fr->fr_tif.fd_ifname, $2, sizeof(fr->fr_tif.fd_ifname));
|
||||||
fr->fr_tif.fd_ip = $4;
|
fr->fr_tif.fd_ip = $4;
|
||||||
|
yyexpectaddr = 0;
|
||||||
|
free($2);
|
||||||
|
}
|
||||||
|
| routeto name duptoseparator YY_IPV6
|
||||||
|
{ strncpy(fr->fr_tif.fd_ifname, $2, sizeof(fr->fr_tif.fd_ifname));
|
||||||
|
bcopy(&$4, &fr->fr_tif.fd_ip6, sizeof(fr->fr_tif.fd_ip6));
|
||||||
|
yyexpectaddr = 0;
|
||||||
free($2);
|
free($2);
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
@ -508,7 +526,7 @@ replyto:
|
|||||||
{ strncpy(fr->fr_rif.fd_ifname, $2, sizeof(fr->fr_rif.fd_ifname));
|
{ strncpy(fr->fr_rif.fd_ifname, $2, sizeof(fr->fr_rif.fd_ifname));
|
||||||
free($2);
|
free($2);
|
||||||
}
|
}
|
||||||
| IPFY_REPLY_TO name ':' hostname
|
| IPFY_REPLY_TO name duptoseparator hostname
|
||||||
{ strncpy(fr->fr_rif.fd_ifname, $2, sizeof(fr->fr_rif.fd_ifname));
|
{ strncpy(fr->fr_rif.fd_ifname, $2, sizeof(fr->fr_rif.fd_ifname));
|
||||||
fr->fr_rif.fd_ip = $4;
|
fr->fr_rif.fd_ip = $4;
|
||||||
free($2);
|
free($2);
|
||||||
@ -756,6 +774,7 @@ addr: IPFY_ANY { bzero(&($$), sizeof($$)); }
|
|||||||
fill6bits(128, (u_32_t *)&$$.m); }
|
fill6bits(128, (u_32_t *)&$$.m); }
|
||||||
| YY_IPV6 maskspace ipv6mask { bcopy(&$1, &$$.a, sizeof($$.a));
|
| YY_IPV6 maskspace ipv6mask { bcopy(&$1, &$$.a, sizeof($$.a));
|
||||||
bcopy(&$3, &$$.m, sizeof($$.m)); }
|
bcopy(&$3, &$$.m, sizeof($$.m)); }
|
||||||
|
;
|
||||||
|
|
||||||
maskspace:
|
maskspace:
|
||||||
'/'
|
'/'
|
||||||
|
3
dist/ipf/tools/lexer.c
vendored
3
dist/ipf/tools/lexer.c
vendored
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: lexer.c,v 1.1.1.1 2004/03/28 08:56:35 martti Exp $ */
|
/* $NetBSD: lexer.c,v 1.2 2004/05/09 03:53:23 christos Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2003 by Darren Reed.
|
* Copyright (C) 2003 by Darren Reed.
|
||||||
@ -44,6 +44,7 @@ int yyexpectaddr = 0;
|
|||||||
int yybreakondot = 0;
|
int yybreakondot = 0;
|
||||||
int yyvarnext = 0;
|
int yyvarnext = 0;
|
||||||
int yytokentype = 0;
|
int yytokentype = 0;
|
||||||
|
int *yycont;
|
||||||
wordtab_t *yywordtab = NULL;
|
wordtab_t *yywordtab = NULL;
|
||||||
|
|
||||||
static wordtab_t *yyfindkey __P((char *));
|
static wordtab_t *yyfindkey __P((char *));
|
||||||
|
3
dist/ipf/tools/lexer.h
vendored
3
dist/ipf/tools/lexer.h
vendored
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: lexer.h,v 1.1.1.1 2004/03/28 08:56:35 martti Exp $ */
|
/* $NetBSD: lexer.h,v 1.2 2004/05/09 03:53:23 christos Exp $ */
|
||||||
|
|
||||||
|
|
||||||
typedef struct wordtab {
|
typedef struct wordtab {
|
||||||
@ -30,6 +30,7 @@ extern char *yykeytostr __P((int));
|
|||||||
extern FILE *yyin;
|
extern FILE *yyin;
|
||||||
extern int yylineNum;
|
extern int yylineNum;
|
||||||
extern int yyexpectaddr;
|
extern int yyexpectaddr;
|
||||||
|
extern int *yycont;
|
||||||
extern int yybreakondot;
|
extern int yybreakondot;
|
||||||
extern int yyvarnext;
|
extern int yyvarnext;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user