10654 lines
308 KiB
Diff
10654 lines
308 KiB
Diff
diff -Naur wide-dhcpv6-20080615.orig/cfparse.c wide-dhcpv6-20080615/cfparse.c
|
||
--- wide-dhcpv6-20080615.orig/cfparse.c 2007-03-21 17:53:10.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/cfparse.c 1970-01-01 08:00:00.000000000 +0800
|
||
@@ -1,3156 +0,0 @@
|
||
-/* A Bison parser, made by GNU Bison 2.1. */
|
||
-
|
||
-/* Skeleton parser for Yacc-like parsing with Bison,
|
||
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||
-
|
||
- This program is free software; you can redistribute it and/or modify
|
||
- it under the terms of the GNU General Public License as published by
|
||
- the Free Software Foundation; either version 2, or (at your option)
|
||
- any later version.
|
||
-
|
||
- This program is distributed in the hope that it will be useful,
|
||
- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
- GNU General Public License for more details.
|
||
-
|
||
- You should have received a copy of the GNU General Public License
|
||
- along with this program; if not, write to the Free Software
|
||
- Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||
- Boston, MA 02110-1301, USA. */
|
||
-
|
||
-/* As a special exception, when this file is copied by Bison into a
|
||
- Bison output file, you may use that output file without restriction.
|
||
- This special exception was added by the Free Software Foundation
|
||
- in version 1.24 of Bison. */
|
||
-
|
||
-/* Written by Richard Stallman by simplifying the original so called
|
||
- ``semantic'' parser. */
|
||
-
|
||
-/* All symbols defined below should begin with yy or YY, to avoid
|
||
- infringing on user name space. This should be done even for local
|
||
- variables, as they might otherwise be expanded by user macros.
|
||
- There are some unavoidable exceptions within include files to
|
||
- define necessary library symbols; they are noted "INFRINGES ON
|
||
- USER NAME SPACE" below. */
|
||
-
|
||
-/* Identify Bison output. */
|
||
-#define YYBISON 1
|
||
-
|
||
-/* Bison version. */
|
||
-#define YYBISON_VERSION "2.1"
|
||
-
|
||
-/* Skeleton name. */
|
||
-#define YYSKELETON_NAME "yacc.c"
|
||
-
|
||
-/* Pure parsers. */
|
||
-#define YYPURE 0
|
||
-
|
||
-/* Using locations. */
|
||
-#define YYLSP_NEEDED 0
|
||
-
|
||
-
|
||
-
|
||
-/* Tokens. */
|
||
-#ifndef YYTOKENTYPE
|
||
-# define YYTOKENTYPE
|
||
- /* Put the tokens into the symbol table, so that GDB and other debuggers
|
||
- know about them. */
|
||
- enum yytokentype {
|
||
- INTERFACE = 258,
|
||
- IFNAME = 259,
|
||
- PREFIX_INTERFACE = 260,
|
||
- SLA_ID = 261,
|
||
- SLA_LEN = 262,
|
||
- DUID_ID = 263,
|
||
- ID_ASSOC = 264,
|
||
- IA_PD = 265,
|
||
- IAID = 266,
|
||
- IA_NA = 267,
|
||
- ADDRESS = 268,
|
||
- REQUEST = 269,
|
||
- SEND = 270,
|
||
- ALLOW = 271,
|
||
- PREFERENCE = 272,
|
||
- HOST = 273,
|
||
- HOSTNAME = 274,
|
||
- DUID = 275,
|
||
- OPTION = 276,
|
||
- RAPID_COMMIT = 277,
|
||
- DNS_SERVERS = 278,
|
||
- DNS_NAME = 279,
|
||
- NTP_SERVERS = 280,
|
||
- REFRESHTIME = 281,
|
||
- SIP_SERVERS = 282,
|
||
- SIP_NAME = 283,
|
||
- NIS_SERVERS = 284,
|
||
- NIS_NAME = 285,
|
||
- NISP_SERVERS = 286,
|
||
- NISP_NAME = 287,
|
||
- BCMCS_SERVERS = 288,
|
||
- BCMCS_NAME = 289,
|
||
- INFO_ONLY = 290,
|
||
- SCRIPT = 291,
|
||
- DELAYEDKEY = 292,
|
||
- AUTHENTICATION = 293,
|
||
- PROTOCOL = 294,
|
||
- ALGORITHM = 295,
|
||
- DELAYED = 296,
|
||
- RECONFIG = 297,
|
||
- HMACMD5 = 298,
|
||
- MONOCOUNTER = 299,
|
||
- AUTHNAME = 300,
|
||
- RDM = 301,
|
||
- KEY = 302,
|
||
- KEYINFO = 303,
|
||
- REALM = 304,
|
||
- KEYID = 305,
|
||
- SECRET = 306,
|
||
- KEYNAME = 307,
|
||
- EXPIRE = 308,
|
||
- ADDRPOOL = 309,
|
||
- POOLNAME = 310,
|
||
- RANGE = 311,
|
||
- TO = 312,
|
||
- ADDRESS_POOL = 313,
|
||
- INCLUDE = 314,
|
||
- NUMBER = 315,
|
||
- SLASH = 316,
|
||
- EOS = 317,
|
||
- BCL = 318,
|
||
- ECL = 319,
|
||
- STRING = 320,
|
||
- QSTRING = 321,
|
||
- PREFIX = 322,
|
||
- INFINITY = 323,
|
||
- COMMA = 324
|
||
- };
|
||
-#endif
|
||
-/* Tokens. */
|
||
-#define INTERFACE 258
|
||
-#define IFNAME 259
|
||
-#define PREFIX_INTERFACE 260
|
||
-#define SLA_ID 261
|
||
-#define SLA_LEN 262
|
||
-#define DUID_ID 263
|
||
-#define ID_ASSOC 264
|
||
-#define IA_PD 265
|
||
-#define IAID 266
|
||
-#define IA_NA 267
|
||
-#define ADDRESS 268
|
||
-#define REQUEST 269
|
||
-#define SEND 270
|
||
-#define ALLOW 271
|
||
-#define PREFERENCE 272
|
||
-#define HOST 273
|
||
-#define HOSTNAME 274
|
||
-#define DUID 275
|
||
-#define OPTION 276
|
||
-#define RAPID_COMMIT 277
|
||
-#define DNS_SERVERS 278
|
||
-#define DNS_NAME 279
|
||
-#define NTP_SERVERS 280
|
||
-#define REFRESHTIME 281
|
||
-#define SIP_SERVERS 282
|
||
-#define SIP_NAME 283
|
||
-#define NIS_SERVERS 284
|
||
-#define NIS_NAME 285
|
||
-#define NISP_SERVERS 286
|
||
-#define NISP_NAME 287
|
||
-#define BCMCS_SERVERS 288
|
||
-#define BCMCS_NAME 289
|
||
-#define INFO_ONLY 290
|
||
-#define SCRIPT 291
|
||
-#define DELAYEDKEY 292
|
||
-#define AUTHENTICATION 293
|
||
-#define PROTOCOL 294
|
||
-#define ALGORITHM 295
|
||
-#define DELAYED 296
|
||
-#define RECONFIG 297
|
||
-#define HMACMD5 298
|
||
-#define MONOCOUNTER 299
|
||
-#define AUTHNAME 300
|
||
-#define RDM 301
|
||
-#define KEY 302
|
||
-#define KEYINFO 303
|
||
-#define REALM 304
|
||
-#define KEYID 305
|
||
-#define SECRET 306
|
||
-#define KEYNAME 307
|
||
-#define EXPIRE 308
|
||
-#define ADDRPOOL 309
|
||
-#define POOLNAME 310
|
||
-#define RANGE 311
|
||
-#define TO 312
|
||
-#define ADDRESS_POOL 313
|
||
-#define INCLUDE 314
|
||
-#define NUMBER 315
|
||
-#define SLASH 316
|
||
-#define EOS 317
|
||
-#define BCL 318
|
||
-#define ECL 319
|
||
-#define STRING 320
|
||
-#define QSTRING 321
|
||
-#define PREFIX 322
|
||
-#define INFINITY 323
|
||
-#define COMMA 324
|
||
-
|
||
-
|
||
-
|
||
-
|
||
-/* Copy the first part of user declarations. */
|
||
-#line 31 "cfparse.y"
|
||
-
|
||
-#include <sys/types.h>
|
||
-#include <sys/socket.h>
|
||
-#include <sys/queue.h>
|
||
-#include <sys/time.h>
|
||
-
|
||
-#include <netinet/in.h>
|
||
-
|
||
-#include <arpa/inet.h>
|
||
-
|
||
-#include <stdlib.h>
|
||
-#include <string.h>
|
||
-
|
||
-#include "dhcp6.h"
|
||
-#include "config.h"
|
||
-#include "common.h"
|
||
-
|
||
-extern int lineno;
|
||
-extern int cfdebug;
|
||
-
|
||
-extern void yywarn __P((char *, ...))
|
||
- __attribute__((__format__(__printf__, 1, 2)));
|
||
-extern void yyerror __P((char *, ...))
|
||
- __attribute__((__format__(__printf__, 1, 2)));
|
||
-
|
||
-#define MAKE_NAMELIST(l, n, p) do { \
|
||
- (l) = (struct cf_namelist *)malloc(sizeof(*(l))); \
|
||
- if ((l) == NULL) { \
|
||
- yywarn("can't allocate memory"); \
|
||
- if (p) cleanup_cflist(p); \
|
||
- return (-1); \
|
||
- } \
|
||
- memset((l), 0, sizeof(*(l))); \
|
||
- l->line = lineno; \
|
||
- l->name = (n); \
|
||
- l->params = (p); \
|
||
- } while (0)
|
||
-
|
||
-#define MAKE_CFLIST(l, t, pp, pl) do { \
|
||
- (l) = (struct cf_list *)malloc(sizeof(*(l))); \
|
||
- if ((l) == NULL) { \
|
||
- yywarn("can't allocate memory"); \
|
||
- if (pp) free(pp); \
|
||
- if (pl) cleanup_cflist(pl); \
|
||
- return (-1); \
|
||
- } \
|
||
- memset((l), 0, sizeof(*(l))); \
|
||
- l->line = lineno; \
|
||
- l->type = (t); \
|
||
- l->ptr = (pp); \
|
||
- l->list = (pl); \
|
||
- l->tail = (l); \
|
||
- } while (0)
|
||
-
|
||
-static struct cf_namelist *iflist_head, *hostlist_head, *iapdlist_head;
|
||
-static struct cf_namelist *addrpoollist_head;
|
||
-static struct cf_namelist *authinfolist_head, *keylist_head;
|
||
-static struct cf_namelist *ianalist_head;
|
||
-struct cf_list *cf_dns_list, *cf_dns_name_list, *cf_ntp_list;
|
||
-struct cf_list *cf_sip_list, *cf_sip_name_list;
|
||
-struct cf_list *cf_nis_list, *cf_nis_name_list;
|
||
-struct cf_list *cf_nisp_list, *cf_nisp_name_list;
|
||
-struct cf_list *cf_bcmcs_list, *cf_bcmcs_name_list;
|
||
-long long cf_refreshtime = -1;
|
||
-
|
||
-extern int yylex __P((void));
|
||
-extern int cfswitch_buffer __P((char *));
|
||
-static int add_namelist __P((struct cf_namelist *, struct cf_namelist **));
|
||
-static void cleanup __P((void));
|
||
-static void cleanup_namelist __P((struct cf_namelist *));
|
||
-static void cleanup_cflist __P((struct cf_list *));
|
||
-
|
||
-
|
||
-/* Enabling traces. */
|
||
-#ifndef YYDEBUG
|
||
-# define YYDEBUG 0
|
||
-#endif
|
||
-
|
||
-/* Enabling verbose error messages. */
|
||
-#ifdef YYERROR_VERBOSE
|
||
-# undef YYERROR_VERBOSE
|
||
-# define YYERROR_VERBOSE 1
|
||
-#else
|
||
-# define YYERROR_VERBOSE 0
|
||
-#endif
|
||
-
|
||
-/* Enabling the token table. */
|
||
-#ifndef YYTOKEN_TABLE
|
||
-# define YYTOKEN_TABLE 0
|
||
-#endif
|
||
-
|
||
-#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
|
||
-#line 126 "cfparse.y"
|
||
-typedef union YYSTYPE {
|
||
- long long num;
|
||
- char* str;
|
||
- struct cf_list *list;
|
||
- struct dhcp6_prefix *prefix;
|
||
- struct dhcp6_range *range;
|
||
- struct dhcp6_poolspec *pool;
|
||
-} YYSTYPE;
|
||
-/* Line 196 of yacc.c. */
|
||
-#line 305 "y.tab.c"
|
||
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
|
||
-# define YYSTYPE_IS_DECLARED 1
|
||
-# define YYSTYPE_IS_TRIVIAL 1
|
||
-#endif
|
||
-
|
||
-
|
||
-
|
||
-/* Copy the second part of user declarations. */
|
||
-
|
||
-
|
||
-/* Line 219 of yacc.c. */
|
||
-#line 317 "y.tab.c"
|
||
-
|
||
-#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
|
||
-# define YYSIZE_T __SIZE_TYPE__
|
||
-#endif
|
||
-#if ! defined (YYSIZE_T) && defined (size_t)
|
||
-# define YYSIZE_T size_t
|
||
-#endif
|
||
-#if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus))
|
||
-# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
|
||
-# define YYSIZE_T size_t
|
||
-#endif
|
||
-#if ! defined (YYSIZE_T)
|
||
-# define YYSIZE_T unsigned int
|
||
-#endif
|
||
-
|
||
-#ifndef YY_
|
||
-# if YYENABLE_NLS
|
||
-# if ENABLE_NLS
|
||
-# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
|
||
-# define YY_(msgid) dgettext ("bison-runtime", msgid)
|
||
-# endif
|
||
-# endif
|
||
-# ifndef YY_
|
||
-# define YY_(msgid) msgid
|
||
-# endif
|
||
-#endif
|
||
-
|
||
-#if ! defined (yyoverflow) || YYERROR_VERBOSE
|
||
-
|
||
-/* The parser invokes alloca or malloc; define the necessary symbols. */
|
||
-
|
||
-# ifdef YYSTACK_USE_ALLOCA
|
||
-# if YYSTACK_USE_ALLOCA
|
||
-# ifdef __GNUC__
|
||
-# define YYSTACK_ALLOC __builtin_alloca
|
||
-# else
|
||
-# define YYSTACK_ALLOC alloca
|
||
-# if defined (__STDC__) || defined (__cplusplus)
|
||
-# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
|
||
-# define YYINCLUDED_STDLIB_H
|
||
-# endif
|
||
-# endif
|
||
-# endif
|
||
-# endif
|
||
-
|
||
-# ifdef YYSTACK_ALLOC
|
||
- /* Pacify GCC's `empty if-body' warning. */
|
||
-# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
|
||
-# ifndef YYSTACK_ALLOC_MAXIMUM
|
||
- /* The OS might guarantee only one guard page at the bottom of the stack,
|
||
- and a page size can be as small as 4096 bytes. So we cannot safely
|
||
- invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
|
||
- to allow for a few compiler-allocated temporary stack slots. */
|
||
-# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */
|
||
-# endif
|
||
-# else
|
||
-# define YYSTACK_ALLOC YYMALLOC
|
||
-# define YYSTACK_FREE YYFREE
|
||
-# ifndef YYSTACK_ALLOC_MAXIMUM
|
||
-# define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1)
|
||
-# endif
|
||
-# ifdef __cplusplus
|
||
-extern "C" {
|
||
-# endif
|
||
-# ifndef YYMALLOC
|
||
-# define YYMALLOC malloc
|
||
-# if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \
|
||
- && (defined (__STDC__) || defined (__cplusplus)))
|
||
-void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
|
||
-# endif
|
||
-# endif
|
||
-# ifndef YYFREE
|
||
-# define YYFREE free
|
||
-# if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \
|
||
- && (defined (__STDC__) || defined (__cplusplus)))
|
||
-void free (void *); /* INFRINGES ON USER NAME SPACE */
|
||
-# endif
|
||
-# endif
|
||
-# ifdef __cplusplus
|
||
-}
|
||
-# endif
|
||
-# endif
|
||
-#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
|
||
-
|
||
-
|
||
-#if (! defined (yyoverflow) \
|
||
- && (! defined (__cplusplus) \
|
||
- || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
|
||
-
|
||
-/* A type that is properly aligned for any stack member. */
|
||
-union yyalloc
|
||
-{
|
||
- short int yyss;
|
||
- YYSTYPE yyvs;
|
||
- };
|
||
-
|
||
-/* The size of the maximum gap between one aligned stack and the next. */
|
||
-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
|
||
-
|
||
-/* The size of an array large to enough to hold all stacks, each with
|
||
- N elements. */
|
||
-# define YYSTACK_BYTES(N) \
|
||
- ((N) * (sizeof (short int) + sizeof (YYSTYPE)) \
|
||
- + YYSTACK_GAP_MAXIMUM)
|
||
-
|
||
-/* Copy COUNT objects from FROM to TO. The source and destination do
|
||
- not overlap. */
|
||
-# ifndef YYCOPY
|
||
-# if defined (__GNUC__) && 1 < __GNUC__
|
||
-# define YYCOPY(To, From, Count) \
|
||
- __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
|
||
-# else
|
||
-# define YYCOPY(To, From, Count) \
|
||
- do \
|
||
- { \
|
||
- YYSIZE_T yyi; \
|
||
- for (yyi = 0; yyi < (Count); yyi++) \
|
||
- (To)[yyi] = (From)[yyi]; \
|
||
- } \
|
||
- while (0)
|
||
-# endif
|
||
-# endif
|
||
-
|
||
-/* Relocate STACK from its old location to the new one. The
|
||
- local variables YYSIZE and YYSTACKSIZE give the old and new number of
|
||
- elements in the stack, and YYPTR gives the new location of the
|
||
- stack. Advance YYPTR to a properly aligned location for the next
|
||
- stack. */
|
||
-# define YYSTACK_RELOCATE(Stack) \
|
||
- do \
|
||
- { \
|
||
- YYSIZE_T yynewbytes; \
|
||
- YYCOPY (&yyptr->Stack, Stack, yysize); \
|
||
- Stack = &yyptr->Stack; \
|
||
- yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
|
||
- yyptr += yynewbytes / sizeof (*yyptr); \
|
||
- } \
|
||
- while (0)
|
||
-
|
||
-#endif
|
||
-
|
||
-#if defined (__STDC__) || defined (__cplusplus)
|
||
- typedef signed char yysigned_char;
|
||
-#else
|
||
- typedef short int yysigned_char;
|
||
-#endif
|
||
-
|
||
-/* YYFINAL -- State number of the termination state. */
|
||
-#define YYFINAL 2
|
||
-/* YYLAST -- Last index in YYTABLE. */
|
||
-#define YYLAST 227
|
||
-
|
||
-/* YYNTOKENS -- Number of terminals. */
|
||
-#define YYNTOKENS 70
|
||
-/* YYNNTS -- Number of nonterminals. */
|
||
-#define YYNNTS 36
|
||
-/* YYNRULES -- Number of rules. */
|
||
-#define YYNRULES 105
|
||
-/* YYNRULES -- Number of states. */
|
||
-#define YYNSTATES 231
|
||
-
|
||
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
|
||
-#define YYUNDEFTOK 2
|
||
-#define YYMAXUTOK 324
|
||
-
|
||
-#define YYTRANSLATE(YYX) \
|
||
- ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
|
||
-
|
||
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
|
||
-static const unsigned char yytranslate[] =
|
||
-{
|
||
- 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||
- 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
|
||
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
|
||
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
|
||
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
|
||
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
|
||
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
|
||
- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
|
||
- 65, 66, 67, 68, 69
|
||
-};
|
||
-
|
||
-#if YYDEBUG
|
||
-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
|
||
- YYRHS. */
|
||
-static const unsigned short int yyprhs[] =
|
||
-{
|
||
- 0, 0, 3, 4, 7, 9, 11, 13, 15, 17,
|
||
- 19, 21, 23, 30, 37, 42, 47, 52, 57, 62,
|
||
- 67, 72, 77, 82, 87, 92, 97, 105, 112, 120,
|
||
- 127, 134, 141, 145, 152, 153, 156, 158, 159, 162,
|
||
- 166, 170, 173, 177, 181, 185, 189, 193, 197, 201,
|
||
- 205, 209, 211, 215, 217, 220, 223, 226, 228, 230,
|
||
- 232, 234, 236, 238, 240, 242, 244, 246, 248, 250,
|
||
- 254, 257, 261, 266, 272, 275, 279, 281, 283, 284,
|
||
- 287, 289, 293, 300, 301, 304, 308, 312, 313, 316,
|
||
- 320, 321, 324, 328, 332, 336, 340, 342, 344, 346,
|
||
- 348, 349, 352, 356, 360, 364
|
||
-};
|
||
-
|
||
-/* YYRHS -- A `-1'-separated list of the rules' RHS. */
|
||
-static const yysigned_char yyrhs[] =
|
||
-{
|
||
- 71, 0, -1, -1, 71, 72, -1, 73, -1, 74,
|
||
- -1, 75, -1, 76, -1, 77, -1, 78, -1, 80,
|
||
- -1, 79, -1, 3, 4, 63, 83, 64, 62, -1,
|
||
- 18, 19, 63, 83, 64, 62, -1, 21, 23, 81,
|
||
- 62, -1, 21, 24, 66, 62, -1, 21, 25, 81,
|
||
- 62, -1, 21, 27, 81, 62, -1, 21, 28, 66,
|
||
- 62, -1, 21, 29, 81, 62, -1, 21, 30, 66,
|
||
- 62, -1, 21, 31, 81, 62, -1, 21, 32, 66,
|
||
- 62, -1, 21, 33, 81, 62, -1, 21, 34, 66,
|
||
- 62, -1, 21, 26, 60, 62, -1, 9, 10, 11,
|
||
- 63, 92, 64, 62, -1, 9, 10, 63, 92, 64,
|
||
- 62, -1, 9, 12, 11, 63, 97, 64, 62, -1,
|
||
- 9, 12, 63, 97, 64, 62, -1, 38, 45, 63,
|
||
- 99, 64, 62, -1, 48, 52, 63, 104, 64, 62,
|
||
- -1, 59, 66, 62, -1, 54, 55, 63, 83, 64,
|
||
- 62, -1, -1, 81, 82, -1, 65, -1, -1, 83,
|
||
- 84, -1, 15, 85, 62, -1, 14, 85, 62, -1,
|
||
- 35, 62, -1, 16, 86, 62, -1, 20, 8, 62,
|
||
- -1, 13, 88, 62, -1, 67, 89, 62, -1, 17,
|
||
- 60, 62, -1, 36, 66, 62, -1, 37, 65, 62,
|
||
- -1, 56, 87, 62, -1, 58, 90, 62, -1, 86,
|
||
- -1, 86, 69, 85, -1, 22, -1, 38, 45, -1,
|
||
- 10, 60, -1, 12, 60, -1, 27, -1, 28, -1,
|
||
- 23, -1, 24, -1, 25, -1, 26, -1, 29, -1,
|
||
- 30, -1, 31, -1, 32, -1, 33, -1, 34, -1,
|
||
- 65, 57, 65, -1, 65, 91, -1, 65, 91, 91,
|
||
- -1, 65, 61, 60, 91, -1, 65, 61, 60, 91,
|
||
- 91, -1, 65, 91, -1, 65, 91, 91, -1, 68,
|
||
- -1, 60, -1, -1, 92, 93, -1, 94, -1, 67,
|
||
- 89, 62, -1, 5, 4, 63, 95, 64, 62, -1,
|
||
- -1, 95, 96, -1, 6, 60, 62, -1, 7, 60,
|
||
- 62, -1, -1, 97, 98, -1, 13, 88, 62, -1,
|
||
- -1, 99, 100, -1, 39, 101, 62, -1, 40, 102,
|
||
- 62, -1, 46, 103, 62, -1, 47, 65, 62, -1,
|
||
- 41, -1, 42, -1, 43, -1, 44, -1, -1, 104,
|
||
- 105, -1, 49, 66, 62, -1, 50, 60, 62, -1,
|
||
- 51, 66, 62, -1, 53, 66, 62, -1
|
||
-};
|
||
-
|
||
-/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
|
||
-static const unsigned short int yyrline[] =
|
||
-{
|
||
- 0, 149, 149, 151, 155, 156, 157, 158, 159, 160,
|
||
- 161, 162, 166, 178, 190, 199, 214, 223, 232, 247,
|
||
- 256, 271, 280, 295, 304, 319, 348, 357, 371, 380,
|
||
- 397, 409, 421, 432, 444, 445, 463, 486, 487, 505,
|
||
- 513, 521, 529, 537, 545, 553, 561, 570, 578, 586,
|
||
- 594, 605, 609, 619, 627, 635, 643, 651, 659, 667,
|
||
- 675, 683, 691, 699, 707, 715, 723, 731, 739, 750,
|
||
- 781, 808, 841, 868, 901, 926, 957, 961, 968, 969,
|
||
- 987, 988, 999, 1009, 1010, 1028, 1036, 1047, 1048, 1066,
|
||
- 1077, 1078, 1096, 1104, 1112, 1120, 1131, 1132, 1136, 1140,
|
||
- 1144, 1145, 1163, 1171, 1179, 1187
|
||
-};
|
||
-#endif
|
||
-
|
||
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
|
||
-/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
|
||
- First, the terminals, then, starting at YYNTOKENS, nonterminals. */
|
||
-static const char *const yytname[] =
|
||
-{
|
||
- "$end", "error", "$undefined", "INTERFACE", "IFNAME",
|
||
- "PREFIX_INTERFACE", "SLA_ID", "SLA_LEN", "DUID_ID", "ID_ASSOC", "IA_PD",
|
||
- "IAID", "IA_NA", "ADDRESS", "REQUEST", "SEND", "ALLOW", "PREFERENCE",
|
||
- "HOST", "HOSTNAME", "DUID", "OPTION", "RAPID_COMMIT", "DNS_SERVERS",
|
||
- "DNS_NAME", "NTP_SERVERS", "REFRESHTIME", "SIP_SERVERS", "SIP_NAME",
|
||
- "NIS_SERVERS", "NIS_NAME", "NISP_SERVERS", "NISP_NAME", "BCMCS_SERVERS",
|
||
- "BCMCS_NAME", "INFO_ONLY", "SCRIPT", "DELAYEDKEY", "AUTHENTICATION",
|
||
- "PROTOCOL", "ALGORITHM", "DELAYED", "RECONFIG", "HMACMD5", "MONOCOUNTER",
|
||
- "AUTHNAME", "RDM", "KEY", "KEYINFO", "REALM", "KEYID", "SECRET",
|
||
- "KEYNAME", "EXPIRE", "ADDRPOOL", "POOLNAME", "RANGE", "TO",
|
||
- "ADDRESS_POOL", "INCLUDE", "NUMBER", "SLASH", "EOS", "BCL", "ECL",
|
||
- "STRING", "QSTRING", "PREFIX", "INFINITY", "COMMA", "$accept",
|
||
- "statements", "statement", "interface_statement", "host_statement",
|
||
- "option_statement", "ia_statement", "authentication_statement",
|
||
- "key_statement", "include_statement", "addrpool_statement",
|
||
- "address_list", "address_list_ent", "declarations", "declaration",
|
||
- "dhcpoption_list", "dhcpoption", "rangeparam", "addressparam",
|
||
- "prefixparam", "poolparam", "duration", "iapdconf_list", "iapdconf",
|
||
- "prefix_interface", "ifparams", "ifparam", "ianaconf_list", "ianaconf",
|
||
- "authparam_list", "authparam", "authproto", "authalg", "authrdm",
|
||
- "keyparam_list", "keyparam", 0
|
||
-};
|
||
-#endif
|
||
-
|
||
-# ifdef YYPRINT
|
||
-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
|
||
- token YYLEX-NUM. */
|
||
-static const unsigned short int yytoknum[] =
|
||
-{
|
||
- 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
|
||
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
|
||
- 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
|
||
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
|
||
- 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
|
||
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
|
||
- 315, 316, 317, 318, 319, 320, 321, 322, 323, 324
|
||
-};
|
||
-# endif
|
||
-
|
||
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
|
||
-static const unsigned char yyr1[] =
|
||
-{
|
||
- 0, 70, 71, 71, 72, 72, 72, 72, 72, 72,
|
||
- 72, 72, 73, 74, 75, 75, 75, 75, 75, 75,
|
||
- 75, 75, 75, 75, 75, 75, 76, 76, 76, 76,
|
||
- 77, 78, 79, 80, 81, 81, 82, 83, 83, 84,
|
||
- 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
|
||
- 84, 85, 85, 86, 86, 86, 86, 86, 86, 86,
|
||
- 86, 86, 86, 86, 86, 86, 86, 86, 86, 87,
|
||
- 88, 88, 89, 89, 90, 90, 91, 91, 92, 92,
|
||
- 93, 93, 94, 95, 95, 96, 96, 97, 97, 98,
|
||
- 99, 99, 100, 100, 100, 100, 101, 101, 102, 103,
|
||
- 104, 104, 105, 105, 105, 105
|
||
-};
|
||
-
|
||
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
|
||
-static const unsigned char yyr2[] =
|
||
-{
|
||
- 0, 2, 0, 2, 1, 1, 1, 1, 1, 1,
|
||
- 1, 1, 6, 6, 4, 4, 4, 4, 4, 4,
|
||
- 4, 4, 4, 4, 4, 4, 7, 6, 7, 6,
|
||
- 6, 6, 3, 6, 0, 2, 1, 0, 2, 3,
|
||
- 3, 2, 3, 3, 3, 3, 3, 3, 3, 3,
|
||
- 3, 1, 3, 1, 2, 2, 2, 1, 1, 1,
|
||
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
|
||
- 2, 3, 4, 5, 2, 3, 1, 1, 0, 2,
|
||
- 1, 3, 6, 0, 2, 3, 3, 0, 2, 3,
|
||
- 0, 2, 3, 3, 3, 3, 1, 1, 1, 1,
|
||
- 0, 2, 3, 3, 3, 3
|
||
-};
|
||
-
|
||
-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
|
||
- STATE-NUM when YYTABLE doesn't specify something else to do. Zero
|
||
- means the default is an error. */
|
||
-static const unsigned char yydefact[] =
|
||
-{
|
||
- 2, 0, 1, 0, 0, 0, 0, 0, 0, 0,
|
||
- 0, 3, 4, 5, 6, 7, 8, 9, 11, 10,
|
||
- 0, 0, 0, 0, 34, 0, 34, 0, 34, 0,
|
||
- 34, 0, 34, 0, 34, 0, 0, 0, 0, 0,
|
||
- 37, 0, 78, 0, 87, 37, 0, 0, 0, 0,
|
||
- 0, 0, 0, 0, 0, 0, 0, 0, 90, 100,
|
||
- 37, 32, 0, 78, 0, 87, 0, 0, 14, 36,
|
||
- 35, 15, 16, 25, 17, 18, 19, 20, 21, 22,
|
||
- 23, 24, 0, 0, 0, 0, 0, 0, 0, 0,
|
||
- 0, 0, 0, 0, 0, 0, 0, 0, 38, 0,
|
||
- 0, 0, 0, 79, 80, 0, 0, 0, 88, 0,
|
||
- 0, 0, 0, 0, 0, 91, 0, 0, 0, 0,
|
||
- 0, 101, 0, 0, 0, 0, 0, 53, 59, 60,
|
||
- 61, 62, 57, 58, 63, 64, 65, 66, 67, 68,
|
||
- 0, 0, 51, 0, 0, 0, 0, 41, 0, 0,
|
||
- 0, 0, 0, 0, 12, 0, 0, 0, 0, 27,
|
||
- 0, 0, 0, 29, 13, 96, 97, 0, 98, 0,
|
||
- 99, 0, 0, 30, 0, 0, 0, 0, 31, 33,
|
||
- 77, 76, 70, 44, 55, 56, 54, 40, 0, 39,
|
||
- 42, 46, 43, 47, 48, 0, 49, 74, 50, 0,
|
||
- 45, 26, 83, 81, 28, 89, 92, 93, 94, 95,
|
||
- 102, 103, 104, 105, 71, 52, 69, 75, 0, 0,
|
||
- 72, 0, 0, 0, 84, 73, 0, 0, 82, 85,
|
||
- 86
|
||
-};
|
||
-
|
||
-/* YYDEFGOTO[NTERM-NUM]. */
|
||
-static const short int yydefgoto[] =
|
||
-{
|
||
- -1, 1, 11, 12, 13, 14, 15, 16, 17, 18,
|
||
- 19, 46, 70, 62, 98, 141, 142, 151, 124, 156,
|
||
- 153, 182, 64, 103, 104, 219, 224, 66, 108, 82,
|
||
- 115, 167, 169, 171, 83, 121
|
||
-};
|
||
-
|
||
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
|
||
- STATE-NUM. */
|
||
-#define YYPACT_NINF -152
|
||
-static const short int yypact[] =
|
||
-{
|
||
- -152, 4, -152, 8, 64, -4, 119, -28, -14, -26,
|
||
- -22, -152, -152, -152, -152, -152, -152, -152, -152, -152,
|
||
- -15, -6, 5, 21, -152, -7, -152, 0, -152, 27,
|
||
- -152, 32, -152, 34, -152, 36, 40, 41, 42, 37,
|
||
- -152, 43, -152, 44, -152, -152, -51, 46, -25, 55,
|
||
- -12, 56, 16, 58, 20, 59, 30, 60, -152, -152,
|
||
- -152, -152, 19, -152, -3, -152, 6, 74, -152, -152,
|
||
- -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
|
||
- -152, -152, 33, -23, 99, 31, 146, 146, 146, 63,
|
||
- 116, 65, 62, 61, 66, 68, 67, 72, -152, -2,
|
||
- 121, 77, 72, -152, -152, 7, 31, 78, -152, 92,
|
||
- -18, 117, 115, 96, 100, -152, 98, 105, 101, 120,
|
||
- 123, -152, 125, -50, 126, 122, 129, -152, -152, -152,
|
||
- -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
|
||
- 136, 128, 114, 130, 131, 132, 133, -152, 134, 135,
|
||
- 141, 137, -50, 138, -152, 140, 142, 143, 139, -152,
|
||
- 144, 145, 147, -152, -152, -152, -152, 148, -152, 149,
|
||
- -152, 150, 151, -152, 152, 153, 154, 155, -152, -152,
|
||
- -152, -152, -50, -152, -152, -152, -152, -152, 146, -152,
|
||
- -152, -152, -152, -152, -152, 156, -152, -50, -152, 158,
|
||
- -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
|
||
- -152, -152, -152, -152, -152, -152, -152, -152, -50, 2,
|
||
- -50, 159, 160, 161, -152, -152, 162, 163, -152, -152,
|
||
- -152
|
||
-};
|
||
-
|
||
-/* YYPGOTO[NTERM-NUM]. */
|
||
-static const short int yypgoto[] =
|
||
-{
|
||
- -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
|
||
- -152, 17, -152, -39, -152, -87, 103, -152, 97, 106,
|
||
- -152, -151, 164, -152, -152, -152, -152, 157, -152, -152,
|
||
- -152, -152, -152, -152, -152, -152
|
||
-};
|
||
-
|
||
-/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
|
||
- positive, shift that token. If negative, reduce the rule which
|
||
- number is the opposite. If zero, do what YYDEFACT says.
|
||
- If YYTABLE_NINF, syntax error. */
|
||
-#define YYTABLE_NINF -1
|
||
-static const unsigned char yytable[] =
|
||
-{
|
||
- 143, 197, 100, 100, 2, 41, 67, 3, 221, 222,
|
||
- 180, 68, 20, 4, 69, 23, 43, 36, 181, 106,
|
||
- 106, 84, 5, 165, 166, 6, 116, 117, 118, 38,
|
||
- 119, 214, 85, 86, 87, 88, 89, 72, 37, 90,
|
||
- 69, 120, 7, 48, 39, 50, 217, 52, 40, 54,
|
||
- 74, 56, 8, 69, 91, 92, 93, 42, 9, 47,
|
||
- 49, 101, 157, 10, 102, 102, 223, 220, 44, 225,
|
||
- 107, 161, 110, 111, 21, 94, 22, 95, 76, 112,
|
||
- 113, 69, 78, 96, 45, 69, 97, 85, 86, 87,
|
||
- 88, 89, 80, 51, 90, 69, 123, 114, 53, 61,
|
||
- 55, 215, 57, 58, 59, 60, 63, 65, 71, 91,
|
||
- 92, 93, 85, 86, 87, 88, 89, 73, 75, 90,
|
||
- 77, 79, 81, 145, 146, 158, 149, 147, 148, 154,
|
||
- 94, 150, 95, 152, 91, 92, 93, 155, 109, 159,
|
||
- 163, 97, 24, 25, 26, 27, 28, 29, 30, 31,
|
||
- 32, 33, 34, 35, 164, 94, 125, 95, 126, 170,
|
||
- 168, 172, 173, 122, 174, 175, 97, 176, 127, 128,
|
||
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
|
||
- 139, 186, 184, 188, 140, 178, 177, 179, 183, 185,
|
||
- 187, 144, 189, 190, 191, 192, 193, 194, 195, 196,
|
||
- 198, 199, 202, 162, 200, 201, 203, 204, 160, 205,
|
||
- 206, 207, 208, 209, 210, 211, 212, 213, 218, 226,
|
||
- 227, 216, 105, 228, 229, 230, 0, 99
|
||
-};
|
||
-
|
||
-static const short int yycheck[] =
|
||
-{
|
||
- 87, 152, 5, 5, 0, 11, 45, 3, 6, 7,
|
||
- 60, 62, 4, 9, 65, 19, 11, 45, 68, 13,
|
||
- 13, 60, 18, 41, 42, 21, 49, 50, 51, 55,
|
||
- 53, 182, 13, 14, 15, 16, 17, 62, 52, 20,
|
||
- 65, 64, 38, 26, 66, 28, 197, 30, 63, 32,
|
||
- 62, 34, 48, 65, 35, 36, 37, 63, 54, 66,
|
||
- 60, 64, 64, 59, 67, 67, 64, 218, 63, 220,
|
||
- 64, 64, 39, 40, 10, 56, 12, 58, 62, 46,
|
||
- 47, 65, 62, 64, 63, 65, 67, 13, 14, 15,
|
||
- 16, 17, 62, 66, 20, 65, 65, 64, 66, 62,
|
||
- 66, 188, 66, 63, 63, 63, 63, 63, 62, 35,
|
||
- 36, 37, 13, 14, 15, 16, 17, 62, 62, 20,
|
||
- 62, 62, 62, 60, 8, 4, 65, 62, 66, 62,
|
||
- 56, 65, 58, 65, 35, 36, 37, 65, 64, 62,
|
||
- 62, 67, 23, 24, 25, 26, 27, 28, 29, 30,
|
||
- 31, 32, 33, 34, 62, 56, 10, 58, 12, 44,
|
||
- 43, 65, 62, 64, 66, 60, 67, 66, 22, 23,
|
||
- 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
|
||
- 34, 45, 60, 69, 38, 62, 66, 62, 62, 60,
|
||
- 62, 88, 62, 62, 62, 62, 62, 62, 57, 62,
|
||
- 62, 61, 63, 106, 62, 62, 62, 62, 102, 62,
|
||
- 62, 62, 62, 62, 62, 62, 62, 62, 60, 60,
|
||
- 60, 65, 65, 62, 62, 62, -1, 63
|
||
-};
|
||
-
|
||
-/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
|
||
- symbol of state STATE-NUM. */
|
||
-static const unsigned char yystos[] =
|
||
-{
|
||
- 0, 71, 0, 3, 9, 18, 21, 38, 48, 54,
|
||
- 59, 72, 73, 74, 75, 76, 77, 78, 79, 80,
|
||
- 4, 10, 12, 19, 23, 24, 25, 26, 27, 28,
|
||
- 29, 30, 31, 32, 33, 34, 45, 52, 55, 66,
|
||
- 63, 11, 63, 11, 63, 63, 81, 66, 81, 60,
|
||
- 81, 66, 81, 66, 81, 66, 81, 66, 63, 63,
|
||
- 63, 62, 83, 63, 92, 63, 97, 83, 62, 65,
|
||
- 82, 62, 62, 62, 62, 62, 62, 62, 62, 62,
|
||
- 62, 62, 99, 104, 83, 13, 14, 15, 16, 17,
|
||
- 20, 35, 36, 37, 56, 58, 64, 67, 84, 92,
|
||
- 5, 64, 67, 93, 94, 97, 13, 64, 98, 64,
|
||
- 39, 40, 46, 47, 64, 100, 49, 50, 51, 53,
|
||
- 64, 105, 64, 65, 88, 10, 12, 22, 23, 24,
|
||
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
|
||
- 38, 85, 86, 85, 86, 60, 8, 62, 66, 65,
|
||
- 65, 87, 65, 90, 62, 65, 89, 64, 4, 62,
|
||
- 89, 64, 88, 62, 62, 41, 42, 101, 43, 102,
|
||
- 44, 103, 65, 62, 66, 60, 66, 66, 62, 62,
|
||
- 60, 68, 91, 62, 60, 60, 45, 62, 69, 62,
|
||
- 62, 62, 62, 62, 62, 57, 62, 91, 62, 61,
|
||
- 62, 62, 63, 62, 62, 62, 62, 62, 62, 62,
|
||
- 62, 62, 62, 62, 91, 85, 65, 91, 60, 95,
|
||
- 91, 6, 7, 64, 96, 91, 60, 60, 62, 62,
|
||
- 62
|
||
-};
|
||
-
|
||
-#define yyerrok (yyerrstatus = 0)
|
||
-#define yyclearin (yychar = YYEMPTY)
|
||
-#define YYEMPTY (-2)
|
||
-#define YYEOF 0
|
||
-
|
||
-#define YYACCEPT goto yyacceptlab
|
||
-#define YYABORT goto yyabortlab
|
||
-#define YYERROR goto yyerrorlab
|
||
-
|
||
-
|
||
-/* Like YYERROR except do call yyerror. This remains here temporarily
|
||
- to ease the transition to the new meaning of YYERROR, for GCC.
|
||
- Once GCC version 2 has supplanted version 1, this can go. */
|
||
-
|
||
-#define YYFAIL goto yyerrlab
|
||
-
|
||
-#define YYRECOVERING() (!!yyerrstatus)
|
||
-
|
||
-#define YYBACKUP(Token, Value) \
|
||
-do \
|
||
- if (yychar == YYEMPTY && yylen == 1) \
|
||
- { \
|
||
- yychar = (Token); \
|
||
- yylval = (Value); \
|
||
- yytoken = YYTRANSLATE (yychar); \
|
||
- YYPOPSTACK; \
|
||
- goto yybackup; \
|
||
- } \
|
||
- else \
|
||
- { \
|
||
- yyerror (YY_("syntax error: cannot back up")); \
|
||
- YYERROR; \
|
||
- } \
|
||
-while (0)
|
||
-
|
||
-
|
||
-#define YYTERROR 1
|
||
-#define YYERRCODE 256
|
||
-
|
||
-
|
||
-/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
|
||
- If N is 0, then set CURRENT to the empty location which ends
|
||
- the previous symbol: RHS[0] (always defined). */
|
||
-
|
||
-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
|
||
-#ifndef YYLLOC_DEFAULT
|
||
-# define YYLLOC_DEFAULT(Current, Rhs, N) \
|
||
- do \
|
||
- if (N) \
|
||
- { \
|
||
- (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
|
||
- (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
|
||
- (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
|
||
- (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
|
||
- } \
|
||
- else \
|
||
- { \
|
||
- (Current).first_line = (Current).last_line = \
|
||
- YYRHSLOC (Rhs, 0).last_line; \
|
||
- (Current).first_column = (Current).last_column = \
|
||
- YYRHSLOC (Rhs, 0).last_column; \
|
||
- } \
|
||
- while (0)
|
||
-#endif
|
||
-
|
||
-
|
||
-/* YY_LOCATION_PRINT -- Print the location on the stream.
|
||
- This macro was not mandated originally: define only if we know
|
||
- we won't break user code: when these are the locations we know. */
|
||
-
|
||
-#ifndef YY_LOCATION_PRINT
|
||
-# if YYLTYPE_IS_TRIVIAL
|
||
-# define YY_LOCATION_PRINT(File, Loc) \
|
||
- fprintf (File, "%d.%d-%d.%d", \
|
||
- (Loc).first_line, (Loc).first_column, \
|
||
- (Loc).last_line, (Loc).last_column)
|
||
-# else
|
||
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
|
||
-# endif
|
||
-#endif
|
||
-
|
||
-
|
||
-/* YYLEX -- calling `yylex' with the right arguments. */
|
||
-
|
||
-#ifdef YYLEX_PARAM
|
||
-# define YYLEX yylex (YYLEX_PARAM)
|
||
-#else
|
||
-# define YYLEX yylex ()
|
||
-#endif
|
||
-
|
||
-/* Enable debugging if requested. */
|
||
-#if YYDEBUG
|
||
-
|
||
-# ifndef YYFPRINTF
|
||
-# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
|
||
-# define YYFPRINTF fprintf
|
||
-# endif
|
||
-
|
||
-# define YYDPRINTF(Args) \
|
||
-do { \
|
||
- if (yydebug) \
|
||
- YYFPRINTF Args; \
|
||
-} while (0)
|
||
-
|
||
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
|
||
-do { \
|
||
- if (yydebug) \
|
||
- { \
|
||
- YYFPRINTF (stderr, "%s ", Title); \
|
||
- yysymprint (stderr, \
|
||
- Type, Value); \
|
||
- YYFPRINTF (stderr, "\n"); \
|
||
- } \
|
||
-} while (0)
|
||
-
|
||
-/*------------------------------------------------------------------.
|
||
-| yy_stack_print -- Print the state stack from its BOTTOM up to its |
|
||
-| TOP (included). |
|
||
-`------------------------------------------------------------------*/
|
||
-
|
||
-#if defined (__STDC__) || defined (__cplusplus)
|
||
-static void
|
||
-yy_stack_print (short int *bottom, short int *top)
|
||
-#else
|
||
-static void
|
||
-yy_stack_print (bottom, top)
|
||
- short int *bottom;
|
||
- short int *top;
|
||
-#endif
|
||
-{
|
||
- YYFPRINTF (stderr, "Stack now");
|
||
- for (/* Nothing. */; bottom <= top; ++bottom)
|
||
- YYFPRINTF (stderr, " %d", *bottom);
|
||
- YYFPRINTF (stderr, "\n");
|
||
-}
|
||
-
|
||
-# define YY_STACK_PRINT(Bottom, Top) \
|
||
-do { \
|
||
- if (yydebug) \
|
||
- yy_stack_print ((Bottom), (Top)); \
|
||
-} while (0)
|
||
-
|
||
-
|
||
-/*------------------------------------------------.
|
||
-| Report that the YYRULE is going to be reduced. |
|
||
-`------------------------------------------------*/
|
||
-
|
||
-#if defined (__STDC__) || defined (__cplusplus)
|
||
-static void
|
||
-yy_reduce_print (int yyrule)
|
||
-#else
|
||
-static void
|
||
-yy_reduce_print (yyrule)
|
||
- int yyrule;
|
||
-#endif
|
||
-{
|
||
- int yyi;
|
||
- unsigned long int yylno = yyrline[yyrule];
|
||
- YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu), ",
|
||
- yyrule - 1, yylno);
|
||
- /* Print the symbols being reduced, and their result. */
|
||
- for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
|
||
- YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
|
||
- YYFPRINTF (stderr, "-> %s\n", yytname[yyr1[yyrule]]);
|
||
-}
|
||
-
|
||
-# define YY_REDUCE_PRINT(Rule) \
|
||
-do { \
|
||
- if (yydebug) \
|
||
- yy_reduce_print (Rule); \
|
||
-} while (0)
|
||
-
|
||
-/* Nonzero means print parse trace. It is left uninitialized so that
|
||
- multiple parsers can coexist. */
|
||
-int yydebug;
|
||
-#else /* !YYDEBUG */
|
||
-# define YYDPRINTF(Args)
|
||
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
|
||
-# define YY_STACK_PRINT(Bottom, Top)
|
||
-# define YY_REDUCE_PRINT(Rule)
|
||
-#endif /* !YYDEBUG */
|
||
-
|
||
-
|
||
-/* YYINITDEPTH -- initial size of the parser's stacks. */
|
||
-#ifndef YYINITDEPTH
|
||
-# define YYINITDEPTH 200
|
||
-#endif
|
||
-
|
||
-/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
|
||
- if the built-in stack extension method is used).
|
||
-
|
||
- Do not make this value too large; the results are undefined if
|
||
- YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
|
||
- evaluated with infinite-precision integer arithmetic. */
|
||
-
|
||
-#ifndef YYMAXDEPTH
|
||
-# define YYMAXDEPTH 10000
|
||
-#endif
|
||
-
|
||
-
|
||
-
|
||
-#if YYERROR_VERBOSE
|
||
-
|
||
-# ifndef yystrlen
|
||
-# if defined (__GLIBC__) && defined (_STRING_H)
|
||
-# define yystrlen strlen
|
||
-# else
|
||
-/* Return the length of YYSTR. */
|
||
-static YYSIZE_T
|
||
-# if defined (__STDC__) || defined (__cplusplus)
|
||
-yystrlen (const char *yystr)
|
||
-# else
|
||
-yystrlen (yystr)
|
||
- const char *yystr;
|
||
-# endif
|
||
-{
|
||
- const char *yys = yystr;
|
||
-
|
||
- while (*yys++ != '\0')
|
||
- continue;
|
||
-
|
||
- return yys - yystr - 1;
|
||
-}
|
||
-# endif
|
||
-# endif
|
||
-
|
||
-# ifndef yystpcpy
|
||
-# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
|
||
-# define yystpcpy stpcpy
|
||
-# else
|
||
-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
|
||
- YYDEST. */
|
||
-static char *
|
||
-# if defined (__STDC__) || defined (__cplusplus)
|
||
-yystpcpy (char *yydest, const char *yysrc)
|
||
-# else
|
||
-yystpcpy (yydest, yysrc)
|
||
- char *yydest;
|
||
- const char *yysrc;
|
||
-# endif
|
||
-{
|
||
- char *yyd = yydest;
|
||
- const char *yys = yysrc;
|
||
-
|
||
- while ((*yyd++ = *yys++) != '\0')
|
||
- continue;
|
||
-
|
||
- return yyd - 1;
|
||
-}
|
||
-# endif
|
||
-# endif
|
||
-
|
||
-# ifndef yytnamerr
|
||
-/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
|
||
- quotes and backslashes, so that it's suitable for yyerror. The
|
||
- heuristic is that double-quoting is unnecessary unless the string
|
||
- contains an apostrophe, a comma, or backslash (other than
|
||
- backslash-backslash). YYSTR is taken from yytname. If YYRES is
|
||
- null, do not copy; instead, return the length of what the result
|
||
- would have been. */
|
||
-static YYSIZE_T
|
||
-yytnamerr (char *yyres, const char *yystr)
|
||
-{
|
||
- if (*yystr == '"')
|
||
- {
|
||
- size_t yyn = 0;
|
||
- char const *yyp = yystr;
|
||
-
|
||
- for (;;)
|
||
- switch (*++yyp)
|
||
- {
|
||
- case '\'':
|
||
- case ',':
|
||
- goto do_not_strip_quotes;
|
||
-
|
||
- case '\\':
|
||
- if (*++yyp != '\\')
|
||
- goto do_not_strip_quotes;
|
||
- /* Fall through. */
|
||
- default:
|
||
- if (yyres)
|
||
- yyres[yyn] = *yyp;
|
||
- yyn++;
|
||
- break;
|
||
-
|
||
- case '"':
|
||
- if (yyres)
|
||
- yyres[yyn] = '\0';
|
||
- return yyn;
|
||
- }
|
||
- do_not_strip_quotes: ;
|
||
- }
|
||
-
|
||
- if (! yyres)
|
||
- return yystrlen (yystr);
|
||
-
|
||
- return yystpcpy (yyres, yystr) - yyres;
|
||
-}
|
||
-# endif
|
||
-
|
||
-#endif /* YYERROR_VERBOSE */
|
||
-
|
||
-
|
||
-
|
||
-#if YYDEBUG
|
||
-/*--------------------------------.
|
||
-| Print this symbol on YYOUTPUT. |
|
||
-`--------------------------------*/
|
||
-
|
||
-#if defined (__STDC__) || defined (__cplusplus)
|
||
-static void
|
||
-yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
|
||
-#else
|
||
-static void
|
||
-yysymprint (yyoutput, yytype, yyvaluep)
|
||
- FILE *yyoutput;
|
||
- int yytype;
|
||
- YYSTYPE *yyvaluep;
|
||
-#endif
|
||
-{
|
||
- /* Pacify ``unused variable'' warnings. */
|
||
- (void) yyvaluep;
|
||
-
|
||
- if (yytype < YYNTOKENS)
|
||
- YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
|
||
- else
|
||
- YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
|
||
-
|
||
-
|
||
-# ifdef YYPRINT
|
||
- if (yytype < YYNTOKENS)
|
||
- YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
|
||
-# endif
|
||
- switch (yytype)
|
||
- {
|
||
- default:
|
||
- break;
|
||
- }
|
||
- YYFPRINTF (yyoutput, ")");
|
||
-}
|
||
-
|
||
-#endif /* ! YYDEBUG */
|
||
-/*-----------------------------------------------.
|
||
-| Release the memory associated to this symbol. |
|
||
-`-----------------------------------------------*/
|
||
-
|
||
-#if defined (__STDC__) || defined (__cplusplus)
|
||
-static void
|
||
-yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
|
||
-#else
|
||
-static void
|
||
-yydestruct (yymsg, yytype, yyvaluep)
|
||
- const char *yymsg;
|
||
- int yytype;
|
||
- YYSTYPE *yyvaluep;
|
||
-#endif
|
||
-{
|
||
- /* Pacify ``unused variable'' warnings. */
|
||
- (void) yyvaluep;
|
||
-
|
||
- if (!yymsg)
|
||
- yymsg = "Deleting";
|
||
- YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
|
||
-
|
||
- switch (yytype)
|
||
- {
|
||
-
|
||
- default:
|
||
- break;
|
||
- }
|
||
-}
|
||
-
|
||
-
|
||
-/* Prevent warnings from -Wmissing-prototypes. */
|
||
-
|
||
-#ifdef YYPARSE_PARAM
|
||
-# if defined (__STDC__) || defined (__cplusplus)
|
||
-int yyparse (void *YYPARSE_PARAM);
|
||
-# else
|
||
-int yyparse ();
|
||
-# endif
|
||
-#else /* ! YYPARSE_PARAM */
|
||
-#if defined (__STDC__) || defined (__cplusplus)
|
||
-int yyparse (void);
|
||
-#else
|
||
-int yyparse ();
|
||
-#endif
|
||
-#endif /* ! YYPARSE_PARAM */
|
||
-
|
||
-
|
||
-
|
||
-/* The look-ahead symbol. */
|
||
-int yychar;
|
||
-
|
||
-/* The semantic value of the look-ahead symbol. */
|
||
-YYSTYPE yylval;
|
||
-
|
||
-/* Number of syntax errors so far. */
|
||
-int yynerrs;
|
||
-
|
||
-
|
||
-
|
||
-/*----------.
|
||
-| yyparse. |
|
||
-`----------*/
|
||
-
|
||
-#ifdef YYPARSE_PARAM
|
||
-# if defined (__STDC__) || defined (__cplusplus)
|
||
-int yyparse (void *YYPARSE_PARAM)
|
||
-# else
|
||
-int yyparse (YYPARSE_PARAM)
|
||
- void *YYPARSE_PARAM;
|
||
-# endif
|
||
-#else /* ! YYPARSE_PARAM */
|
||
-#if defined (__STDC__) || defined (__cplusplus)
|
||
-int
|
||
-yyparse (void)
|
||
-#else
|
||
-int
|
||
-yyparse ()
|
||
- ;
|
||
-#endif
|
||
-#endif
|
||
-{
|
||
-
|
||
- int yystate;
|
||
- int yyn;
|
||
- int yyresult;
|
||
- /* Number of tokens to shift before error messages enabled. */
|
||
- int yyerrstatus;
|
||
- /* Look-ahead token as an internal (translated) token number. */
|
||
- int yytoken = 0;
|
||
-
|
||
- /* Three stacks and their tools:
|
||
- `yyss': related to states,
|
||
- `yyvs': related to semantic values,
|
||
- `yyls': related to locations.
|
||
-
|
||
- Refer to the stacks thru separate pointers, to allow yyoverflow
|
||
- to reallocate them elsewhere. */
|
||
-
|
||
- /* The state stack. */
|
||
- short int yyssa[YYINITDEPTH];
|
||
- short int *yyss = yyssa;
|
||
- short int *yyssp;
|
||
-
|
||
- /* The semantic value stack. */
|
||
- YYSTYPE yyvsa[YYINITDEPTH];
|
||
- YYSTYPE *yyvs = yyvsa;
|
||
- YYSTYPE *yyvsp;
|
||
-
|
||
-
|
||
-
|
||
-#define YYPOPSTACK (yyvsp--, yyssp--)
|
||
-
|
||
- YYSIZE_T yystacksize = YYINITDEPTH;
|
||
-
|
||
- /* The variables used to return semantic value and location from the
|
||
- action routines. */
|
||
- YYSTYPE yyval;
|
||
-
|
||
-
|
||
- /* When reducing, the number of symbols on the RHS of the reduced
|
||
- rule. */
|
||
- int yylen;
|
||
-
|
||
- YYDPRINTF ((stderr, "Starting parse\n"));
|
||
-
|
||
- yystate = 0;
|
||
- yyerrstatus = 0;
|
||
- yynerrs = 0;
|
||
- yychar = YYEMPTY; /* Cause a token to be read. */
|
||
-
|
||
- /* Initialize stack pointers.
|
||
- Waste one element of value and location stack
|
||
- so that they stay on the same level as the state stack.
|
||
- The wasted elements are never initialized. */
|
||
-
|
||
- yyssp = yyss;
|
||
- yyvsp = yyvs;
|
||
-
|
||
- goto yysetstate;
|
||
-
|
||
-/*------------------------------------------------------------.
|
||
-| yynewstate -- Push a new state, which is found in yystate. |
|
||
-`------------------------------------------------------------*/
|
||
- yynewstate:
|
||
- /* In all cases, when you get here, the value and location stacks
|
||
- have just been pushed. so pushing a state here evens the stacks.
|
||
- */
|
||
- yyssp++;
|
||
-
|
||
- yysetstate:
|
||
- *yyssp = yystate;
|
||
-
|
||
- if (yyss + yystacksize - 1 <= yyssp)
|
||
- {
|
||
- /* Get the current used size of the three stacks, in elements. */
|
||
- YYSIZE_T yysize = yyssp - yyss + 1;
|
||
-
|
||
-#ifdef yyoverflow
|
||
- {
|
||
- /* Give user a chance to reallocate the stack. Use copies of
|
||
- these so that the &'s don't force the real ones into
|
||
- memory. */
|
||
- YYSTYPE *yyvs1 = yyvs;
|
||
- short int *yyss1 = yyss;
|
||
-
|
||
-
|
||
- /* Each stack pointer address is followed by the size of the
|
||
- data in use in that stack, in bytes. This used to be a
|
||
- conditional around just the two extra args, but that might
|
||
- be undefined if yyoverflow is a macro. */
|
||
- yyoverflow (YY_("memory exhausted"),
|
||
- &yyss1, yysize * sizeof (*yyssp),
|
||
- &yyvs1, yysize * sizeof (*yyvsp),
|
||
-
|
||
- &yystacksize);
|
||
-
|
||
- yyss = yyss1;
|
||
- yyvs = yyvs1;
|
||
- }
|
||
-#else /* no yyoverflow */
|
||
-# ifndef YYSTACK_RELOCATE
|
||
- goto yyexhaustedlab;
|
||
-# else
|
||
- /* Extend the stack our own way. */
|
||
- if (YYMAXDEPTH <= yystacksize)
|
||
- goto yyexhaustedlab;
|
||
- yystacksize *= 2;
|
||
- if (YYMAXDEPTH < yystacksize)
|
||
- yystacksize = YYMAXDEPTH;
|
||
-
|
||
- {
|
||
- short int *yyss1 = yyss;
|
||
- union yyalloc *yyptr =
|
||
- (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
|
||
- if (! yyptr)
|
||
- goto yyexhaustedlab;
|
||
- YYSTACK_RELOCATE (yyss);
|
||
- YYSTACK_RELOCATE (yyvs);
|
||
-
|
||
-# undef YYSTACK_RELOCATE
|
||
- if (yyss1 != yyssa)
|
||
- YYSTACK_FREE (yyss1);
|
||
- }
|
||
-# endif
|
||
-#endif /* no yyoverflow */
|
||
-
|
||
- yyssp = yyss + yysize - 1;
|
||
- yyvsp = yyvs + yysize - 1;
|
||
-
|
||
-
|
||
- YYDPRINTF ((stderr, "Stack size increased to %lu\n",
|
||
- (unsigned long int) yystacksize));
|
||
-
|
||
- if (yyss + yystacksize - 1 <= yyssp)
|
||
- YYABORT;
|
||
- }
|
||
-
|
||
- YYDPRINTF ((stderr, "Entering state %d\n", yystate));
|
||
-
|
||
- goto yybackup;
|
||
-
|
||
-/*-----------.
|
||
-| yybackup. |
|
||
-`-----------*/
|
||
-yybackup:
|
||
-
|
||
-/* Do appropriate processing given the current state. */
|
||
-/* Read a look-ahead token if we need one and don't already have one. */
|
||
-/* yyresume: */
|
||
-
|
||
- /* First try to decide what to do without reference to look-ahead token. */
|
||
-
|
||
- yyn = yypact[yystate];
|
||
- if (yyn == YYPACT_NINF)
|
||
- goto yydefault;
|
||
-
|
||
- /* Not known => get a look-ahead token if don't already have one. */
|
||
-
|
||
- /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
|
||
- if (yychar == YYEMPTY)
|
||
- {
|
||
- YYDPRINTF ((stderr, "Reading a token: "));
|
||
- yychar = YYLEX;
|
||
- }
|
||
-
|
||
- if (yychar <= YYEOF)
|
||
- {
|
||
- yychar = yytoken = YYEOF;
|
||
- YYDPRINTF ((stderr, "Now at end of input.\n"));
|
||
- }
|
||
- else
|
||
- {
|
||
- yytoken = YYTRANSLATE (yychar);
|
||
- YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
|
||
- }
|
||
-
|
||
- /* If the proper action on seeing token YYTOKEN is to reduce or to
|
||
- detect an error, take that action. */
|
||
- yyn += yytoken;
|
||
- if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
|
||
- goto yydefault;
|
||
- yyn = yytable[yyn];
|
||
- if (yyn <= 0)
|
||
- {
|
||
- if (yyn == 0 || yyn == YYTABLE_NINF)
|
||
- goto yyerrlab;
|
||
- yyn = -yyn;
|
||
- goto yyreduce;
|
||
- }
|
||
-
|
||
- if (yyn == YYFINAL)
|
||
- YYACCEPT;
|
||
-
|
||
- /* Shift the look-ahead token. */
|
||
- YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
|
||
-
|
||
- /* Discard the token being shifted unless it is eof. */
|
||
- if (yychar != YYEOF)
|
||
- yychar = YYEMPTY;
|
||
-
|
||
- *++yyvsp = yylval;
|
||
-
|
||
-
|
||
- /* Count tokens shifted since error; after three, turn off error
|
||
- status. */
|
||
- if (yyerrstatus)
|
||
- yyerrstatus--;
|
||
-
|
||
- yystate = yyn;
|
||
- goto yynewstate;
|
||
-
|
||
-
|
||
-/*-----------------------------------------------------------.
|
||
-| yydefault -- do the default action for the current state. |
|
||
-`-----------------------------------------------------------*/
|
||
-yydefault:
|
||
- yyn = yydefact[yystate];
|
||
- if (yyn == 0)
|
||
- goto yyerrlab;
|
||
- goto yyreduce;
|
||
-
|
||
-
|
||
-/*-----------------------------.
|
||
-| yyreduce -- Do a reduction. |
|
||
-`-----------------------------*/
|
||
-yyreduce:
|
||
- /* yyn is the number of a rule to reduce with. */
|
||
- yylen = yyr2[yyn];
|
||
-
|
||
- /* If YYLEN is nonzero, implement the default value of the action:
|
||
- `$$ = $1'.
|
||
-
|
||
- Otherwise, the following line sets YYVAL to garbage.
|
||
- This behavior is undocumented and Bison
|
||
- users should not rely upon it. Assigning to YYVAL
|
||
- unconditionally makes the parser a bit smaller, and it avoids a
|
||
- GCC warning that YYVAL may be used uninitialized. */
|
||
- yyval = yyvsp[1-yylen];
|
||
-
|
||
-
|
||
- YY_REDUCE_PRINT (yyn);
|
||
- switch (yyn)
|
||
- {
|
||
- case 12:
|
||
-#line 167 "cfparse.y"
|
||
- {
|
||
- struct cf_namelist *ifl;
|
||
-
|
||
- MAKE_NAMELIST(ifl, (yyvsp[-4].str), (yyvsp[-2].list));
|
||
-
|
||
- if (add_namelist(ifl, &iflist_head))
|
||
- return (-1);
|
||
- }
|
||
- break;
|
||
-
|
||
- case 13:
|
||
-#line 179 "cfparse.y"
|
||
- {
|
||
- struct cf_namelist *host;
|
||
-
|
||
- MAKE_NAMELIST(host, (yyvsp[-4].str), (yyvsp[-2].list));
|
||
-
|
||
- if (add_namelist(host, &hostlist_head))
|
||
- return (-1);
|
||
- }
|
||
- break;
|
||
-
|
||
- case 14:
|
||
-#line 191 "cfparse.y"
|
||
- {
|
||
- if (cf_dns_list == NULL)
|
||
- cf_dns_list = (yyvsp[-1].list);
|
||
- else {
|
||
- cf_dns_list->tail->next = (yyvsp[-1].list);
|
||
- cf_dns_list->tail = (yyvsp[-1].list)->tail;
|
||
- }
|
||
- }
|
||
- break;
|
||
-
|
||
- case 15:
|
||
-#line 200 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, CFLISTENT_GENERIC, (yyvsp[-1].str), NULL);
|
||
-
|
||
- if (cf_dns_name_list == NULL) {
|
||
- cf_dns_name_list = l;
|
||
- cf_dns_name_list->tail = l;
|
||
- cf_dns_name_list->next = NULL;
|
||
- } else {
|
||
- cf_dns_name_list->tail->next = l;
|
||
- cf_dns_name_list->tail = l->tail;
|
||
- }
|
||
- }
|
||
- break;
|
||
-
|
||
- case 16:
|
||
-#line 215 "cfparse.y"
|
||
- {
|
||
- if (cf_ntp_list == NULL)
|
||
- cf_ntp_list = (yyvsp[-1].list);
|
||
- else {
|
||
- cf_ntp_list->tail->next = (yyvsp[-1].list);
|
||
- cf_ntp_list->tail = (yyvsp[-1].list)->tail;
|
||
- }
|
||
- }
|
||
- break;
|
||
-
|
||
- case 17:
|
||
-#line 224 "cfparse.y"
|
||
- {
|
||
- if (cf_sip_list == NULL)
|
||
- cf_sip_list = (yyvsp[-1].list);
|
||
- else {
|
||
- cf_sip_list->tail->next = (yyvsp[-1].list);
|
||
- cf_sip_list->tail = (yyvsp[-1].list)->tail;
|
||
- }
|
||
- }
|
||
- break;
|
||
-
|
||
- case 18:
|
||
-#line 233 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, CFLISTENT_GENERIC, (yyvsp[-1].str), NULL);
|
||
-
|
||
- if (cf_sip_name_list == NULL) {
|
||
- cf_sip_name_list = l;
|
||
- cf_sip_name_list->tail = l;
|
||
- cf_sip_name_list->next = NULL;
|
||
- } else {
|
||
- cf_sip_name_list->tail->next = l;
|
||
- cf_sip_name_list->tail = l->tail;
|
||
- }
|
||
- }
|
||
- break;
|
||
-
|
||
- case 19:
|
||
-#line 248 "cfparse.y"
|
||
- {
|
||
- if (cf_nis_list == NULL)
|
||
- cf_nis_list = (yyvsp[-1].list);
|
||
- else {
|
||
- cf_nis_list->tail->next = (yyvsp[-1].list);
|
||
- cf_nis_list->tail = (yyvsp[-1].list)->tail;
|
||
- }
|
||
- }
|
||
- break;
|
||
-
|
||
- case 20:
|
||
-#line 257 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, CFLISTENT_GENERIC, (yyvsp[-1].str), NULL);
|
||
-
|
||
- if (cf_nis_name_list == NULL) {
|
||
- cf_nis_name_list = l;
|
||
- cf_nis_name_list->tail = l;
|
||
- cf_nis_name_list->next = NULL;
|
||
- } else {
|
||
- cf_nis_name_list->tail->next = l;
|
||
- cf_nis_name_list->tail = l->tail;
|
||
- }
|
||
- }
|
||
- break;
|
||
-
|
||
- case 21:
|
||
-#line 272 "cfparse.y"
|
||
- {
|
||
- if (cf_nisp_list == NULL)
|
||
- cf_nisp_list = (yyvsp[-1].list);
|
||
- else {
|
||
- cf_nisp_list->tail->next = (yyvsp[-1].list);
|
||
- cf_nisp_list->tail = (yyvsp[-1].list)->tail;
|
||
- }
|
||
- }
|
||
- break;
|
||
-
|
||
- case 22:
|
||
-#line 281 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, CFLISTENT_GENERIC, (yyvsp[-1].str), NULL);
|
||
-
|
||
- if (cf_nisp_name_list == NULL) {
|
||
- cf_nisp_name_list = l;
|
||
- cf_nisp_name_list->tail = l;
|
||
- cf_nisp_name_list->next = NULL;
|
||
- } else {
|
||
- cf_nisp_name_list->tail->next = l;
|
||
- cf_nisp_name_list->tail = l->tail;
|
||
- }
|
||
- }
|
||
- break;
|
||
-
|
||
- case 23:
|
||
-#line 296 "cfparse.y"
|
||
- {
|
||
- if (cf_bcmcs_list == NULL)
|
||
- cf_bcmcs_list = (yyvsp[-1].list);
|
||
- else {
|
||
- cf_bcmcs_list->tail->next = (yyvsp[-1].list);
|
||
- cf_bcmcs_list->tail = (yyvsp[-1].list)->tail;
|
||
- }
|
||
- }
|
||
- break;
|
||
-
|
||
- case 24:
|
||
-#line 305 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, CFLISTENT_GENERIC, (yyvsp[-1].str), NULL);
|
||
-
|
||
- if (cf_bcmcs_name_list == NULL) {
|
||
- cf_bcmcs_name_list = l;
|
||
- cf_bcmcs_name_list->tail = l;
|
||
- cf_bcmcs_name_list->next = NULL;
|
||
- } else {
|
||
- cf_bcmcs_name_list->tail->next = l;
|
||
- cf_bcmcs_name_list->tail = l->tail;
|
||
- }
|
||
- }
|
||
- break;
|
||
-
|
||
- case 25:
|
||
-#line 320 "cfparse.y"
|
||
- {
|
||
- if (cf_refreshtime == -1) {
|
||
- cf_refreshtime = (yyvsp[-1].num);
|
||
- if (cf_refreshtime < -1 ||
|
||
- cf_refreshtime > 0xffffffff) {
|
||
- /*
|
||
- * refresh time should not be negative
|
||
- * according to the lex definition,
|
||
- * but check it for safety.
|
||
- */
|
||
- yyerror("refresh time is out of range");
|
||
- }
|
||
- if (cf_refreshtime < DHCP6_IRT_MINIMUM) {
|
||
- /*
|
||
- * the value MUST NOT be smaller than
|
||
- * IRT_MINIMUM.
|
||
- */
|
||
- yyerror("refresh time is too small "
|
||
- "(must not be smaller than %d)",
|
||
- DHCP6_IRT_MINIMUM);
|
||
- }
|
||
- } else {
|
||
- yywarn("multiple refresh times (ignored)");
|
||
- }
|
||
- }
|
||
- break;
|
||
-
|
||
- case 26:
|
||
-#line 349 "cfparse.y"
|
||
- {
|
||
- struct cf_namelist *iapd;
|
||
-
|
||
- MAKE_NAMELIST(iapd, (yyvsp[-4].str), (yyvsp[-2].list));
|
||
-
|
||
- if (add_namelist(iapd, &iapdlist_head))
|
||
- return (-1);
|
||
- }
|
||
- break;
|
||
-
|
||
- case 27:
|
||
-#line 358 "cfparse.y"
|
||
- {
|
||
- struct cf_namelist *iapd;
|
||
- char *zero;
|
||
-
|
||
- if ((zero = strdup("0")) == NULL) {
|
||
- yywarn("can't allocate memory");
|
||
- return (-1);
|
||
- }
|
||
- MAKE_NAMELIST(iapd, zero, (yyvsp[-2].list));
|
||
-
|
||
- if (add_namelist(iapd, &iapdlist_head))
|
||
- return (-1);
|
||
- }
|
||
- break;
|
||
-
|
||
- case 28:
|
||
-#line 372 "cfparse.y"
|
||
- {
|
||
- struct cf_namelist *iana;
|
||
-
|
||
- MAKE_NAMELIST(iana, (yyvsp[-4].str), (yyvsp[-2].list));
|
||
-
|
||
- if (add_namelist(iana, &ianalist_head))
|
||
- return (-1);
|
||
- }
|
||
- break;
|
||
-
|
||
- case 29:
|
||
-#line 381 "cfparse.y"
|
||
- {
|
||
- struct cf_namelist *iana;
|
||
- char *zero;
|
||
-
|
||
- if ((zero = strdup("0")) == NULL) {
|
||
- yywarn("can't allocate memory");
|
||
- return (-1);
|
||
- }
|
||
- MAKE_NAMELIST(iana, zero, (yyvsp[-2].list));
|
||
-
|
||
- if (add_namelist(iana, &ianalist_head))
|
||
- return (-1);
|
||
- }
|
||
- break;
|
||
-
|
||
- case 30:
|
||
-#line 398 "cfparse.y"
|
||
- {
|
||
- struct cf_namelist *authinfo;
|
||
-
|
||
- MAKE_NAMELIST(authinfo, (yyvsp[-4].str), (yyvsp[-2].list));
|
||
-
|
||
- if (add_namelist(authinfo, &authinfolist_head))
|
||
- return (-1);
|
||
- }
|
||
- break;
|
||
-
|
||
- case 31:
|
||
-#line 410 "cfparse.y"
|
||
- {
|
||
- struct cf_namelist *key;
|
||
-
|
||
- MAKE_NAMELIST(key, (yyvsp[-4].str), (yyvsp[-2].list));
|
||
-
|
||
- if (add_namelist(key, &keylist_head))
|
||
- return (-1);
|
||
- }
|
||
- break;
|
||
-
|
||
- case 32:
|
||
-#line 422 "cfparse.y"
|
||
- {
|
||
- if (cfswitch_buffer((yyvsp[-1].str))) {
|
||
- free((yyvsp[-1].str));
|
||
- return (-1);
|
||
- }
|
||
- free((yyvsp[-1].str));
|
||
- }
|
||
- break;
|
||
-
|
||
- case 33:
|
||
-#line 433 "cfparse.y"
|
||
- {
|
||
- struct cf_namelist *pool;
|
||
-
|
||
- MAKE_NAMELIST(pool, (yyvsp[-4].str), (yyvsp[-2].list));
|
||
-
|
||
- if (add_namelist(pool, &addrpoollist_head))
|
||
- return (-1);
|
||
- }
|
||
- break;
|
||
-
|
||
- case 34:
|
||
-#line 444 "cfparse.y"
|
||
- { (yyval.list) = NULL; }
|
||
- break;
|
||
-
|
||
- case 35:
|
||
-#line 446 "cfparse.y"
|
||
- {
|
||
- struct cf_list *head;
|
||
-
|
||
- if ((head = (yyvsp[-1].list)) == NULL) {
|
||
- (yyvsp[0].list)->next = NULL;
|
||
- (yyvsp[0].list)->tail = (yyvsp[0].list);
|
||
- head = (yyvsp[0].list);
|
||
- } else {
|
||
- head->tail->next = (yyvsp[0].list);
|
||
- head->tail = (yyvsp[0].list)->tail;
|
||
- }
|
||
-
|
||
- (yyval.list) = head;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 36:
|
||
-#line 464 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
- struct in6_addr a0, *a;
|
||
-
|
||
- if (inet_pton(AF_INET6, (yyvsp[0].str), &a0) != 1) {
|
||
- yywarn("invalid IPv6 address: %s", (yyvsp[0].str));
|
||
- free((yyvsp[0].str));
|
||
- return (-1);
|
||
- }
|
||
- if ((a = malloc(sizeof(*a))) == NULL) {
|
||
- yywarn("can't allocate memory");
|
||
- return (-1);
|
||
- }
|
||
- *a = a0;
|
||
-
|
||
- MAKE_CFLIST(l, CFLISTENT_GENERIC, a, NULL);
|
||
-
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 37:
|
||
-#line 486 "cfparse.y"
|
||
- { (yyval.list) = NULL; }
|
||
- break;
|
||
-
|
||
- case 38:
|
||
-#line 488 "cfparse.y"
|
||
- {
|
||
- struct cf_list *head;
|
||
-
|
||
- if ((head = (yyvsp[-1].list)) == NULL) {
|
||
- (yyvsp[0].list)->next = NULL;
|
||
- (yyvsp[0].list)->tail = (yyvsp[0].list);
|
||
- head = (yyvsp[0].list);
|
||
- } else {
|
||
- head->tail->next = (yyvsp[0].list);
|
||
- head->tail = (yyvsp[0].list)->tail;
|
||
- }
|
||
-
|
||
- (yyval.list) = head;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 39:
|
||
-#line 506 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, DECL_SEND, NULL, (yyvsp[-1].list));
|
||
-
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 40:
|
||
-#line 514 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, DECL_REQUEST, NULL, (yyvsp[-1].list));
|
||
-
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 41:
|
||
-#line 522 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, DECL_INFO_ONLY, NULL, NULL);
|
||
- /* no value */
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 42:
|
||
-#line 530 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, DECL_ALLOW, NULL, (yyvsp[-1].list));
|
||
-
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 43:
|
||
-#line 538 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, DECL_DUID, (yyvsp[-1].str), NULL);
|
||
-
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 44:
|
||
-#line 546 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, DECL_ADDRESS, (yyvsp[-1].prefix),NULL);
|
||
-
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 45:
|
||
-#line 554 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, DECL_PREFIX, (yyvsp[-1].prefix), NULL);
|
||
-
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 46:
|
||
-#line 562 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, DECL_PREFERENCE, NULL, NULL);
|
||
- l->num = (yyvsp[-1].num);
|
||
-
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 47:
|
||
-#line 571 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, DECL_SCRIPT, (yyvsp[-1].str), NULL);
|
||
-
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 48:
|
||
-#line 579 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, DECL_DELAYEDKEY, (yyvsp[-1].str), NULL);
|
||
-
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 49:
|
||
-#line 587 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, DECL_RANGE, (yyvsp[-1].range), NULL);
|
||
-
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 50:
|
||
-#line 595 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, DECL_ADDRESSPOOL, (yyvsp[-1].pool), NULL);
|
||
-
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 51:
|
||
-#line 606 "cfparse.y"
|
||
- {
|
||
- (yyval.list) = (yyvsp[0].list);
|
||
- }
|
||
- break;
|
||
-
|
||
- case 52:
|
||
-#line 610 "cfparse.y"
|
||
- {
|
||
- (yyvsp[-2].list)->next = (yyvsp[0].list);
|
||
- (yyvsp[-2].list)->tail = (yyvsp[0].list)->tail;
|
||
-
|
||
- (yyval.list) = (yyvsp[-2].list);
|
||
- }
|
||
- break;
|
||
-
|
||
- case 53:
|
||
-#line 620 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, DHCPOPT_RAPID_COMMIT, NULL, NULL);
|
||
- /* no value */
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 54:
|
||
-#line 628 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, DHCPOPT_AUTHINFO, NULL, NULL);
|
||
- l->ptr = (yyvsp[0].str);
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 55:
|
||
-#line 636 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, DHCPOPT_IA_PD, NULL, NULL);
|
||
- l->num = (yyvsp[0].num);
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 56:
|
||
-#line 644 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, DHCPOPT_IA_NA, NULL, NULL);
|
||
- l->num = (yyvsp[0].num);
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 57:
|
||
-#line 652 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, DHCPOPT_SIP, NULL, NULL);
|
||
- /* currently no value */
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 58:
|
||
-#line 660 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, DHCPOPT_SIPNAME, NULL, NULL);
|
||
- /* currently no value */
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 59:
|
||
-#line 668 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, DHCPOPT_DNS, NULL, NULL);
|
||
- /* currently no value */
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 60:
|
||
-#line 676 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, DHCPOPT_DNSNAME, NULL, NULL);
|
||
- /* currently no value */
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 61:
|
||
-#line 684 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, DHCPOPT_NTP, NULL, NULL);
|
||
- /* currently no value */
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 62:
|
||
-#line 692 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, DHCPOPT_REFRESHTIME, NULL, NULL);
|
||
- /* currently no value */
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 63:
|
||
-#line 700 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, DHCPOPT_NIS, NULL, NULL);
|
||
- /* currently no value */
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 64:
|
||
-#line 708 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, DHCPOPT_NISNAME, NULL, NULL);
|
||
- /* currently no value */
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 65:
|
||
-#line 716 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, DHCPOPT_NISP, NULL, NULL);
|
||
- /* currently no value */
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 66:
|
||
-#line 724 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, DHCPOPT_NISPNAME, NULL, NULL);
|
||
- /* currently no value */
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 67:
|
||
-#line 732 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, DHCPOPT_BCMCS, NULL, NULL);
|
||
- /* currently no value */
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 68:
|
||
-#line 740 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, DHCPOPT_BCMCSNAME, NULL, NULL);
|
||
- /* currently no value */
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 69:
|
||
-#line 751 "cfparse.y"
|
||
- {
|
||
- struct dhcp6_range range0, *range;
|
||
-
|
||
- memset(&range0, 0, sizeof(range0));
|
||
- if (inet_pton(AF_INET6, (yyvsp[-2].str), &range0.min) != 1) {
|
||
- yywarn("invalid IPv6 address: %s", (yyvsp[-2].str));
|
||
- free((yyvsp[-2].str));
|
||
- free((yyvsp[0].str));
|
||
- return (-1);
|
||
- }
|
||
- if (inet_pton(AF_INET6, (yyvsp[0].str), &range0.max) != 1) {
|
||
- yywarn("invalid IPv6 address: %s", (yyvsp[0].str));
|
||
- free((yyvsp[-2].str));
|
||
- free((yyvsp[0].str));
|
||
- return (-1);
|
||
- }
|
||
- free((yyvsp[-2].str));
|
||
- free((yyvsp[0].str));
|
||
-
|
||
- if ((range = malloc(sizeof(*range))) == NULL) {
|
||
- yywarn("can't allocate memory");
|
||
- return (-1);
|
||
- }
|
||
- *range = range0;
|
||
-
|
||
- (yyval.range) = range;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 70:
|
||
-#line 782 "cfparse.y"
|
||
- {
|
||
- struct dhcp6_prefix pconf0, *pconf;
|
||
-
|
||
- memset(&pconf0, 0, sizeof(pconf0));
|
||
- if (inet_pton(AF_INET6, (yyvsp[-1].str), &pconf0.addr) != 1) {
|
||
- yywarn("invalid IPv6 address: %s", (yyvsp[-1].str));
|
||
- free((yyvsp[-1].str));
|
||
- return (-1);
|
||
- }
|
||
- free((yyvsp[-1].str));
|
||
- /* validate other parameters later */
|
||
- pconf0.plen = 128; /* XXX this field is ignored */
|
||
- if ((yyvsp[0].num) < 0)
|
||
- pconf0.pltime = DHCP6_DURATION_INFINITE;
|
||
- else
|
||
- pconf0.pltime = (u_int32_t)(yyvsp[0].num);
|
||
- pconf0.vltime = pconf0.pltime;
|
||
-
|
||
- if ((pconf = malloc(sizeof(*pconf))) == NULL) {
|
||
- yywarn("can't allocate memory");
|
||
- return (-1);
|
||
- }
|
||
- *pconf = pconf0;
|
||
-
|
||
- (yyval.prefix) = pconf;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 71:
|
||
-#line 809 "cfparse.y"
|
||
- {
|
||
- struct dhcp6_prefix pconf0, *pconf;
|
||
-
|
||
- memset(&pconf0, 0, sizeof(pconf0));
|
||
- if (inet_pton(AF_INET6, (yyvsp[-2].str), &pconf0.addr) != 1) {
|
||
- yywarn("invalid IPv6 address: %s", (yyvsp[-2].str));
|
||
- free((yyvsp[-2].str));
|
||
- return (-1);
|
||
- }
|
||
- free((yyvsp[-2].str));
|
||
- /* validate other parameters later */
|
||
- pconf0.plen = 128; /* XXX */
|
||
- if ((yyvsp[-1].num) < 0)
|
||
- pconf0.pltime = DHCP6_DURATION_INFINITE;
|
||
- else
|
||
- pconf0.pltime = (u_int32_t)(yyvsp[-1].num);
|
||
- if ((yyvsp[0].num) < 0)
|
||
- pconf0.vltime = DHCP6_DURATION_INFINITE;
|
||
- else
|
||
- pconf0.vltime = (u_int32_t)(yyvsp[0].num);
|
||
-
|
||
- if ((pconf = malloc(sizeof(*pconf))) == NULL) {
|
||
- yywarn("can't allocate memory");
|
||
- return (-1);
|
||
- }
|
||
- *pconf = pconf0;
|
||
-
|
||
- (yyval.prefix) = pconf;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 72:
|
||
-#line 842 "cfparse.y"
|
||
- {
|
||
- struct dhcp6_prefix pconf0, *pconf;
|
||
-
|
||
- memset(&pconf0, 0, sizeof(pconf0));
|
||
- if (inet_pton(AF_INET6, (yyvsp[-3].str), &pconf0.addr) != 1) {
|
||
- yywarn("invalid IPv6 address: %s", (yyvsp[-3].str));
|
||
- free((yyvsp[-3].str));
|
||
- return (-1);
|
||
- }
|
||
- free((yyvsp[-3].str));
|
||
- /* validate other parameters later */
|
||
- pconf0.plen = (yyvsp[-1].num);
|
||
- if ((yyvsp[0].num) < 0)
|
||
- pconf0.pltime = DHCP6_DURATION_INFINITE;
|
||
- else
|
||
- pconf0.pltime = (u_int32_t)(yyvsp[0].num);
|
||
- pconf0.vltime = pconf0.pltime;
|
||
-
|
||
- if ((pconf = malloc(sizeof(*pconf))) == NULL) {
|
||
- yywarn("can't allocate memory");
|
||
- return (-1);
|
||
- }
|
||
- *pconf = pconf0;
|
||
-
|
||
- (yyval.prefix) = pconf;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 73:
|
||
-#line 869 "cfparse.y"
|
||
- {
|
||
- struct dhcp6_prefix pconf0, *pconf;
|
||
-
|
||
- memset(&pconf0, 0, sizeof(pconf0));
|
||
- if (inet_pton(AF_INET6, (yyvsp[-4].str), &pconf0.addr) != 1) {
|
||
- yywarn("invalid IPv6 address: %s", (yyvsp[-4].str));
|
||
- free((yyvsp[-4].str));
|
||
- return (-1);
|
||
- }
|
||
- free((yyvsp[-4].str));
|
||
- /* validate other parameters later */
|
||
- pconf0.plen = (yyvsp[-2].num);
|
||
- if ((yyvsp[-1].num) < 0)
|
||
- pconf0.pltime = DHCP6_DURATION_INFINITE;
|
||
- else
|
||
- pconf0.pltime = (u_int32_t)(yyvsp[-1].num);
|
||
- if ((yyvsp[0].num) < 0)
|
||
- pconf0.vltime = DHCP6_DURATION_INFINITE;
|
||
- else
|
||
- pconf0.vltime = (u_int32_t)(yyvsp[0].num);
|
||
-
|
||
- if ((pconf = malloc(sizeof(*pconf))) == NULL) {
|
||
- yywarn("can't allocate memory");
|
||
- return (-1);
|
||
- }
|
||
- *pconf = pconf0;
|
||
-
|
||
- (yyval.prefix) = pconf;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 74:
|
||
-#line 902 "cfparse.y"
|
||
- {
|
||
- struct dhcp6_poolspec* pool;
|
||
-
|
||
- if ((pool = malloc(sizeof(*pool))) == NULL) {
|
||
- yywarn("can't allocate memory");
|
||
- free((yyvsp[-1].str));
|
||
- return (-1);
|
||
- }
|
||
- if ((pool->name = strdup((yyvsp[-1].str))) == NULL) {
|
||
- yywarn("can't allocate memory");
|
||
- free((yyvsp[-1].str));
|
||
- return (-1);
|
||
- }
|
||
- free((yyvsp[-1].str));
|
||
-
|
||
- /* validate other parameters later */
|
||
- if ((yyvsp[0].num) < 0)
|
||
- pool->pltime = DHCP6_DURATION_INFINITE;
|
||
- else
|
||
- pool->pltime = (u_int32_t)(yyvsp[0].num);
|
||
- pool->vltime = pool->pltime;
|
||
-
|
||
- (yyval.pool) = pool;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 75:
|
||
-#line 927 "cfparse.y"
|
||
- {
|
||
- struct dhcp6_poolspec* pool;
|
||
-
|
||
- if ((pool = malloc(sizeof(*pool))) == NULL) {
|
||
- yywarn("can't allocate memory");
|
||
- free((yyvsp[-2].str));
|
||
- return (-1);
|
||
- }
|
||
- if ((pool->name = strdup((yyvsp[-2].str))) == NULL) {
|
||
- yywarn("can't allocate memory");
|
||
- free((yyvsp[-2].str));
|
||
- return (-1);
|
||
- }
|
||
- free((yyvsp[-2].str));
|
||
-
|
||
- /* validate other parameters later */
|
||
- if ((yyvsp[-1].num) < 0)
|
||
- pool->pltime = DHCP6_DURATION_INFINITE;
|
||
- else
|
||
- pool->pltime = (u_int32_t)(yyvsp[-1].num);
|
||
- if ((yyvsp[0].num) < 0)
|
||
- pool->vltime = DHCP6_DURATION_INFINITE;
|
||
- else
|
||
- pool->vltime = (u_int32_t)(yyvsp[0].num);
|
||
-
|
||
- (yyval.pool) = pool;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 76:
|
||
-#line 958 "cfparse.y"
|
||
- {
|
||
- (yyval.num) = -1;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 77:
|
||
-#line 962 "cfparse.y"
|
||
- {
|
||
- (yyval.num) = (yyvsp[0].num);
|
||
- }
|
||
- break;
|
||
-
|
||
- case 78:
|
||
-#line 968 "cfparse.y"
|
||
- { (yyval.list) = NULL; }
|
||
- break;
|
||
-
|
||
- case 79:
|
||
-#line 970 "cfparse.y"
|
||
- {
|
||
- struct cf_list *head;
|
||
-
|
||
- if ((head = (yyvsp[-1].list)) == NULL) {
|
||
- (yyvsp[0].list)->next = NULL;
|
||
- (yyvsp[0].list)->tail = (yyvsp[0].list);
|
||
- head = (yyvsp[0].list);
|
||
- } else {
|
||
- head->tail->next = (yyvsp[0].list);
|
||
- head->tail = (yyvsp[0].list)->tail;
|
||
- }
|
||
-
|
||
- (yyval.list) = head;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 80:
|
||
-#line 987 "cfparse.y"
|
||
- { (yyval.list) = (yyvsp[0].list); }
|
||
- break;
|
||
-
|
||
- case 81:
|
||
-#line 989 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, IACONF_PREFIX, (yyvsp[-1].prefix), NULL);
|
||
-
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 82:
|
||
-#line 1000 "cfparse.y"
|
||
- {
|
||
- struct cf_list *ifl;
|
||
-
|
||
- MAKE_CFLIST(ifl, IACONF_PIF, (yyvsp[-4].str), (yyvsp[-2].list));
|
||
- (yyval.list) = ifl;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 83:
|
||
-#line 1009 "cfparse.y"
|
||
- { (yyval.list) = NULL; }
|
||
- break;
|
||
-
|
||
- case 84:
|
||
-#line 1011 "cfparse.y"
|
||
- {
|
||
- struct cf_list *head;
|
||
-
|
||
- if ((head = (yyvsp[-1].list)) == NULL) {
|
||
- (yyvsp[0].list)->next = NULL;
|
||
- (yyvsp[0].list)->tail = (yyvsp[0].list);
|
||
- head = (yyvsp[0].list);
|
||
- } else {
|
||
- head->tail->next = (yyvsp[0].list);
|
||
- head->tail = (yyvsp[0].list)->tail;
|
||
- }
|
||
-
|
||
- (yyval.list) = head;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 85:
|
||
-#line 1029 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, IFPARAM_SLA_ID, NULL, NULL);
|
||
- l->num = (yyvsp[-1].num);
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 86:
|
||
-#line 1037 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, IFPARAM_SLA_LEN, NULL, NULL);
|
||
- l->num = (yyvsp[-1].num);
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 87:
|
||
-#line 1047 "cfparse.y"
|
||
- { (yyval.list) = NULL; }
|
||
- break;
|
||
-
|
||
- case 88:
|
||
-#line 1049 "cfparse.y"
|
||
- {
|
||
- struct cf_list *head;
|
||
-
|
||
- if ((head = (yyvsp[-1].list)) == NULL) {
|
||
- (yyvsp[0].list)->next = NULL;
|
||
- (yyvsp[0].list)->tail = (yyvsp[0].list);
|
||
- head = (yyvsp[0].list);
|
||
- } else {
|
||
- head->tail->next = (yyvsp[0].list);
|
||
- head->tail = (yyvsp[0].list)->tail;
|
||
- }
|
||
-
|
||
- (yyval.list) = head;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 89:
|
||
-#line 1067 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, IACONF_ADDR, (yyvsp[-1].prefix), NULL);
|
||
-
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 90:
|
||
-#line 1077 "cfparse.y"
|
||
- { (yyval.list) = NULL; }
|
||
- break;
|
||
-
|
||
- case 91:
|
||
-#line 1079 "cfparse.y"
|
||
- {
|
||
- struct cf_list *head;
|
||
-
|
||
- if ((head = (yyvsp[-1].list)) == NULL) {
|
||
- (yyvsp[0].list)->next = NULL;
|
||
- (yyvsp[0].list)->tail = (yyvsp[0].list);
|
||
- head = (yyvsp[0].list);
|
||
- } else {
|
||
- head->tail->next = (yyvsp[0].list);
|
||
- head->tail = (yyvsp[0].list)->tail;
|
||
- }
|
||
-
|
||
- (yyval.list) = head;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 92:
|
||
-#line 1097 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, AUTHPARAM_PROTO, NULL, NULL);
|
||
- l->num = (yyvsp[-1].num);
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 93:
|
||
-#line 1105 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, AUTHPARAM_ALG, NULL, NULL);
|
||
- l->num = (yyvsp[-1].num);
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 94:
|
||
-#line 1113 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, AUTHPARAM_RDM, NULL, NULL);
|
||
- l->num = (yyvsp[-1].num);
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 95:
|
||
-#line 1121 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, AUTHPARAM_KEY, NULL, NULL);
|
||
- l->ptr = (yyvsp[-1].str);
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 96:
|
||
-#line 1131 "cfparse.y"
|
||
- { (yyval.num) = DHCP6_AUTHPROTO_DELAYED; }
|
||
- break;
|
||
-
|
||
- case 97:
|
||
-#line 1132 "cfparse.y"
|
||
- { (yyval.num) = DHCP6_AUTHPROTO_RECONFIG; }
|
||
- break;
|
||
-
|
||
- case 98:
|
||
-#line 1136 "cfparse.y"
|
||
- { (yyval.num) = DHCP6_AUTHALG_HMACMD5; }
|
||
- break;
|
||
-
|
||
- case 99:
|
||
-#line 1140 "cfparse.y"
|
||
- { (yyval.num) = DHCP6_AUTHRDM_MONOCOUNTER; }
|
||
- break;
|
||
-
|
||
- case 100:
|
||
-#line 1144 "cfparse.y"
|
||
- { (yyval.list) = NULL; }
|
||
- break;
|
||
-
|
||
- case 101:
|
||
-#line 1146 "cfparse.y"
|
||
- {
|
||
- struct cf_list *head;
|
||
-
|
||
- if ((head = (yyvsp[-1].list)) == NULL) {
|
||
- (yyvsp[0].list)->next = NULL;
|
||
- (yyvsp[0].list)->tail = (yyvsp[0].list);
|
||
- head = (yyvsp[0].list);
|
||
- } else {
|
||
- head->tail->next = (yyvsp[0].list);
|
||
- head->tail = (yyvsp[0].list)->tail;
|
||
- }
|
||
-
|
||
- (yyval.list) = head;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 102:
|
||
-#line 1164 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, KEYPARAM_REALM, NULL, NULL);
|
||
- l->ptr = (yyvsp[-1].str);
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 103:
|
||
-#line 1172 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, KEYPARAM_KEYID, NULL, NULL);
|
||
- l->num = (yyvsp[-1].num);
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 104:
|
||
-#line 1180 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, KEYPARAM_SECRET, NULL, NULL);
|
||
- l->ptr = (yyvsp[-1].str);
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
- case 105:
|
||
-#line 1188 "cfparse.y"
|
||
- {
|
||
- struct cf_list *l;
|
||
-
|
||
- MAKE_CFLIST(l, KEYPARAM_EXPIRE, NULL, NULL);
|
||
- l->ptr = (yyvsp[-1].str);
|
||
- (yyval.list) = l;
|
||
- }
|
||
- break;
|
||
-
|
||
-
|
||
- default: break;
|
||
- }
|
||
-
|
||
-/* Line 1126 of yacc.c. */
|
||
-#line 2744 "y.tab.c"
|
||
-
|
||
- yyvsp -= yylen;
|
||
- yyssp -= yylen;
|
||
-
|
||
-
|
||
- YY_STACK_PRINT (yyss, yyssp);
|
||
-
|
||
- *++yyvsp = yyval;
|
||
-
|
||
-
|
||
- /* Now `shift' the result of the reduction. Determine what state
|
||
- that goes to, based on the state we popped back to and the rule
|
||
- number reduced by. */
|
||
-
|
||
- yyn = yyr1[yyn];
|
||
-
|
||
- yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
|
||
- if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
|
||
- yystate = yytable[yystate];
|
||
- else
|
||
- yystate = yydefgoto[yyn - YYNTOKENS];
|
||
-
|
||
- goto yynewstate;
|
||
-
|
||
-
|
||
-/*------------------------------------.
|
||
-| yyerrlab -- here on detecting error |
|
||
-`------------------------------------*/
|
||
-yyerrlab:
|
||
- /* If not already recovering from an error, report this error. */
|
||
- if (!yyerrstatus)
|
||
- {
|
||
- ++yynerrs;
|
||
-#if YYERROR_VERBOSE
|
||
- yyn = yypact[yystate];
|
||
-
|
||
- if (YYPACT_NINF < yyn && yyn < YYLAST)
|
||
- {
|
||
- int yytype = YYTRANSLATE (yychar);
|
||
- YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
|
||
- YYSIZE_T yysize = yysize0;
|
||
- YYSIZE_T yysize1;
|
||
- int yysize_overflow = 0;
|
||
- char *yymsg = 0;
|
||
-# define YYERROR_VERBOSE_ARGS_MAXIMUM 5
|
||
- char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
|
||
- int yyx;
|
||
-
|
||
-#if 0
|
||
- /* This is so xgettext sees the translatable formats that are
|
||
- constructed on the fly. */
|
||
- YY_("syntax error, unexpected %s");
|
||
- YY_("syntax error, unexpected %s, expecting %s");
|
||
- YY_("syntax error, unexpected %s, expecting %s or %s");
|
||
- YY_("syntax error, unexpected %s, expecting %s or %s or %s");
|
||
- YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
|
||
-#endif
|
||
- char *yyfmt;
|
||
- char const *yyf;
|
||
- static char const yyunexpected[] = "syntax error, unexpected %s";
|
||
- static char const yyexpecting[] = ", expecting %s";
|
||
- static char const yyor[] = " or %s";
|
||
- char yyformat[sizeof yyunexpected
|
||
- + sizeof yyexpecting - 1
|
||
- + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
|
||
- * (sizeof yyor - 1))];
|
||
- char const *yyprefix = yyexpecting;
|
||
-
|
||
- /* Start YYX at -YYN if negative to avoid negative indexes in
|
||
- YYCHECK. */
|
||
- int yyxbegin = yyn < 0 ? -yyn : 0;
|
||
-
|
||
- /* Stay within bounds of both yycheck and yytname. */
|
||
- int yychecklim = YYLAST - yyn;
|
||
- int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
|
||
- int yycount = 1;
|
||
-
|
||
- yyarg[0] = yytname[yytype];
|
||
- yyfmt = yystpcpy (yyformat, yyunexpected);
|
||
-
|
||
- for (yyx = yyxbegin; yyx < yyxend; ++yyx)
|
||
- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
|
||
- {
|
||
- if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
|
||
- {
|
||
- yycount = 1;
|
||
- yysize = yysize0;
|
||
- yyformat[sizeof yyunexpected - 1] = '\0';
|
||
- break;
|
||
- }
|
||
- yyarg[yycount++] = yytname[yyx];
|
||
- yysize1 = yysize + yytnamerr (0, yytname[yyx]);
|
||
- yysize_overflow |= yysize1 < yysize;
|
||
- yysize = yysize1;
|
||
- yyfmt = yystpcpy (yyfmt, yyprefix);
|
||
- yyprefix = yyor;
|
||
- }
|
||
-
|
||
- yyf = YY_(yyformat);
|
||
- yysize1 = yysize + yystrlen (yyf);
|
||
- yysize_overflow |= yysize1 < yysize;
|
||
- yysize = yysize1;
|
||
-
|
||
- if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM)
|
||
- yymsg = (char *) YYSTACK_ALLOC (yysize);
|
||
- if (yymsg)
|
||
- {
|
||
- /* Avoid sprintf, as that infringes on the user's name space.
|
||
- Don't have undefined behavior even if the translation
|
||
- produced a string with the wrong number of "%s"s. */
|
||
- char *yyp = yymsg;
|
||
- int yyi = 0;
|
||
- while ((*yyp = *yyf))
|
||
- {
|
||
- if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
|
||
- {
|
||
- yyp += yytnamerr (yyp, yyarg[yyi++]);
|
||
- yyf += 2;
|
||
- }
|
||
- else
|
||
- {
|
||
- yyp++;
|
||
- yyf++;
|
||
- }
|
||
- }
|
||
- yyerror (yymsg);
|
||
- YYSTACK_FREE (yymsg);
|
||
- }
|
||
- else
|
||
- {
|
||
- yyerror (YY_("syntax error"));
|
||
- goto yyexhaustedlab;
|
||
- }
|
||
- }
|
||
- else
|
||
-#endif /* YYERROR_VERBOSE */
|
||
- yyerror (YY_("syntax error"));
|
||
- }
|
||
-
|
||
-
|
||
-
|
||
- if (yyerrstatus == 3)
|
||
- {
|
||
- /* If just tried and failed to reuse look-ahead token after an
|
||
- error, discard it. */
|
||
-
|
||
- if (yychar <= YYEOF)
|
||
- {
|
||
- /* Return failure if at end of input. */
|
||
- if (yychar == YYEOF)
|
||
- YYABORT;
|
||
- }
|
||
- else
|
||
- {
|
||
- yydestruct ("Error: discarding", yytoken, &yylval);
|
||
- yychar = YYEMPTY;
|
||
- }
|
||
- }
|
||
-
|
||
- /* Else will try to reuse look-ahead token after shifting the error
|
||
- token. */
|
||
- goto yyerrlab1;
|
||
-
|
||
-
|
||
-/*---------------------------------------------------.
|
||
-| yyerrorlab -- error raised explicitly by YYERROR. |
|
||
-`---------------------------------------------------*/
|
||
-yyerrorlab:
|
||
-
|
||
- /* Pacify compilers like GCC when the user code never invokes
|
||
- YYERROR and the label yyerrorlab therefore never appears in user
|
||
- code. */
|
||
- if (0)
|
||
- goto yyerrorlab;
|
||
-
|
||
-yyvsp -= yylen;
|
||
- yyssp -= yylen;
|
||
- yystate = *yyssp;
|
||
- goto yyerrlab1;
|
||
-
|
||
-
|
||
-/*-------------------------------------------------------------.
|
||
-| yyerrlab1 -- common code for both syntax error and YYERROR. |
|
||
-`-------------------------------------------------------------*/
|
||
-yyerrlab1:
|
||
- yyerrstatus = 3; /* Each real token shifted decrements this. */
|
||
-
|
||
- for (;;)
|
||
- {
|
||
- yyn = yypact[yystate];
|
||
- if (yyn != YYPACT_NINF)
|
||
- {
|
||
- yyn += YYTERROR;
|
||
- if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
|
||
- {
|
||
- yyn = yytable[yyn];
|
||
- if (0 < yyn)
|
||
- break;
|
||
- }
|
||
- }
|
||
-
|
||
- /* Pop the current state because it cannot handle the error token. */
|
||
- if (yyssp == yyss)
|
||
- YYABORT;
|
||
-
|
||
-
|
||
- yydestruct ("Error: popping", yystos[yystate], yyvsp);
|
||
- YYPOPSTACK;
|
||
- yystate = *yyssp;
|
||
- YY_STACK_PRINT (yyss, yyssp);
|
||
- }
|
||
-
|
||
- if (yyn == YYFINAL)
|
||
- YYACCEPT;
|
||
-
|
||
- *++yyvsp = yylval;
|
||
-
|
||
-
|
||
- /* Shift the error token. */
|
||
- YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
|
||
-
|
||
- yystate = yyn;
|
||
- goto yynewstate;
|
||
-
|
||
-
|
||
-/*-------------------------------------.
|
||
-| yyacceptlab -- YYACCEPT comes here. |
|
||
-`-------------------------------------*/
|
||
-yyacceptlab:
|
||
- yyresult = 0;
|
||
- goto yyreturn;
|
||
-
|
||
-/*-----------------------------------.
|
||
-| yyabortlab -- YYABORT comes here. |
|
||
-`-----------------------------------*/
|
||
-yyabortlab:
|
||
- yyresult = 1;
|
||
- goto yyreturn;
|
||
-
|
||
-#ifndef yyoverflow
|
||
-/*-------------------------------------------------.
|
||
-| yyexhaustedlab -- memory exhaustion comes here. |
|
||
-`-------------------------------------------------*/
|
||
-yyexhaustedlab:
|
||
- yyerror (YY_("memory exhausted"));
|
||
- yyresult = 2;
|
||
- /* Fall through. */
|
||
-#endif
|
||
-
|
||
-yyreturn:
|
||
- if (yychar != YYEOF && yychar != YYEMPTY)
|
||
- yydestruct ("Cleanup: discarding lookahead",
|
||
- yytoken, &yylval);
|
||
- while (yyssp != yyss)
|
||
- {
|
||
- yydestruct ("Cleanup: popping",
|
||
- yystos[*yyssp], yyvsp);
|
||
- YYPOPSTACK;
|
||
- }
|
||
-#ifndef yyoverflow
|
||
- if (yyss != yyssa)
|
||
- YYSTACK_FREE (yyss);
|
||
-#endif
|
||
- return yyresult;
|
||
-}
|
||
-
|
||
-
|
||
-#line 1197 "cfparse.y"
|
||
-
|
||
-/* supplement routines for configuration */
|
||
-static int
|
||
-add_namelist(new, headp)
|
||
- struct cf_namelist *new, **headp;
|
||
-{
|
||
- struct cf_namelist *n;
|
||
-
|
||
- /* check for duplicated configuration */
|
||
- for (n = *headp; n; n = n->next) {
|
||
- if (strcmp(n->name, new->name) == 0) {
|
||
- yywarn("duplicated name: %s (ignored)",
|
||
- new->name);
|
||
- cleanup_namelist(new);
|
||
- return (0);
|
||
- }
|
||
- }
|
||
-
|
||
- new->next = *headp;
|
||
- *headp = new;
|
||
-
|
||
- return (0);
|
||
-}
|
||
-
|
||
-/* free temporary resources */
|
||
-static void
|
||
-cleanup()
|
||
-{
|
||
- cleanup_namelist(iflist_head);
|
||
- iflist_head = NULL;
|
||
- cleanup_namelist(hostlist_head);
|
||
- hostlist_head = NULL;
|
||
- cleanup_namelist(iapdlist_head);
|
||
- iapdlist_head = NULL;
|
||
- cleanup_namelist(ianalist_head);
|
||
- ianalist_head = NULL;
|
||
- cleanup_namelist(authinfolist_head);
|
||
- authinfolist_head = NULL;
|
||
- cleanup_namelist(keylist_head);
|
||
- keylist_head = NULL;
|
||
- cleanup_namelist(addrpoollist_head);
|
||
- addrpoollist_head = NULL;
|
||
-
|
||
- cleanup_cflist(cf_sip_list);
|
||
- cf_sip_list = NULL;
|
||
- cleanup_cflist(cf_sip_name_list);
|
||
- cf_sip_name_list = NULL;
|
||
- cleanup_cflist(cf_dns_list);
|
||
- cf_dns_list = NULL;
|
||
- cleanup_cflist(cf_dns_name_list);
|
||
- cf_dns_name_list = NULL;
|
||
- cleanup_cflist(cf_ntp_list);
|
||
- cf_ntp_list = NULL;
|
||
- cleanup_cflist(cf_nis_list);
|
||
- cf_nis_list = NULL;
|
||
- cleanup_cflist(cf_nis_name_list);
|
||
- cf_nis_name_list = NULL;
|
||
- cleanup_cflist(cf_nisp_list);
|
||
- cf_nisp_list = NULL;
|
||
- cleanup_cflist(cf_nisp_name_list);
|
||
- cf_nisp_name_list = NULL;
|
||
- cleanup_cflist(cf_bcmcs_list);
|
||
- cf_bcmcs_list = NULL;
|
||
- cleanup_cflist(cf_bcmcs_name_list);
|
||
- cf_bcmcs_name_list = NULL;
|
||
-}
|
||
-
|
||
-static void
|
||
-cleanup_namelist(head)
|
||
- struct cf_namelist *head;
|
||
-{
|
||
- struct cf_namelist *ifp, *ifp_next;
|
||
-
|
||
- for (ifp = head; ifp; ifp = ifp_next) {
|
||
- ifp_next = ifp->next;
|
||
- cleanup_cflist(ifp->params);
|
||
- free(ifp->name);
|
||
- free(ifp);
|
||
- }
|
||
-}
|
||
-
|
||
-static void
|
||
-cleanup_cflist(p)
|
||
- struct cf_list *p;
|
||
-{
|
||
- struct cf_list *n;
|
||
-
|
||
- if (p == NULL)
|
||
- return;
|
||
-
|
||
- n = p->next;
|
||
- if (p->type == DECL_ADDRESSPOOL) {
|
||
- free(((struct dhcp6_poolspec *)p->ptr)->name);
|
||
- }
|
||
- if (p->ptr)
|
||
- free(p->ptr);
|
||
- if (p->list)
|
||
- cleanup_cflist(p->list);
|
||
- free(p);
|
||
-
|
||
- cleanup_cflist(n);
|
||
-}
|
||
-
|
||
-#define config_fail() \
|
||
- do { cleanup(); configure_cleanup(); return (-1); } while(0)
|
||
-
|
||
-int
|
||
-cf_post_config()
|
||
-{
|
||
- if (configure_keys(keylist_head))
|
||
- config_fail();
|
||
-
|
||
- if (configure_authinfo(authinfolist_head))
|
||
- config_fail();
|
||
-
|
||
- if (configure_ia(iapdlist_head, IATYPE_PD))
|
||
- config_fail();
|
||
-
|
||
- if (configure_ia(ianalist_head, IATYPE_NA))
|
||
- config_fail();
|
||
-
|
||
- if (configure_pool(addrpoollist_head))
|
||
- config_fail();
|
||
-
|
||
- if (configure_interface(iflist_head))
|
||
- config_fail();
|
||
-
|
||
- if (configure_host(hostlist_head))
|
||
- config_fail();
|
||
-
|
||
- if (configure_global_option())
|
||
- config_fail();
|
||
-
|
||
- configure_commit();
|
||
- cleanup();
|
||
- return (0);
|
||
-}
|
||
-#undef config_fail
|
||
-
|
||
-void
|
||
-cf_init()
|
||
-{
|
||
- iflist_head = NULL;
|
||
-}
|
||
-
|
||
diff -Naur wide-dhcpv6-20080615.orig/cftoken.c wide-dhcpv6-20080615/cftoken.c
|
||
--- wide-dhcpv6-20080615.orig/cftoken.c 2007-03-21 17:53:10.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/cftoken.c 1970-01-01 08:00:00.000000000 +0800
|
||
@@ -1,2583 +0,0 @@
|
||
-/* A lexical scanner generated by flex */
|
||
-
|
||
-/* Scanner skeleton version:
|
||
- * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
|
||
- * $FreeBSD: src/usr.bin/lex/flex.skl,v 1.8 2004/01/06 19:03:44 nectar Exp $
|
||
- */
|
||
-
|
||
-#if defined(__FreeBSD__)
|
||
-#include <sys/cdefs.h>
|
||
-#else
|
||
-#define __unused
|
||
-#endif
|
||
-
|
||
-#define FLEX_SCANNER
|
||
-#define YY_FLEX_MAJOR_VERSION 2
|
||
-#define YY_FLEX_MINOR_VERSION 5
|
||
-
|
||
-#include <stdio.h>
|
||
-
|
||
-
|
||
-/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
|
||
-#ifdef c_plusplus
|
||
-#ifndef __cplusplus
|
||
-#define __cplusplus
|
||
-#endif
|
||
-#endif
|
||
-
|
||
-
|
||
-#ifdef __cplusplus
|
||
-
|
||
-#include <stdlib.h>
|
||
-#include <unistd.h>
|
||
-
|
||
-/* Use prototypes in function declarations. */
|
||
-#define YY_USE_PROTOS
|
||
-
|
||
-/* The "const" storage-class-modifier is valid. */
|
||
-#define YY_USE_CONST
|
||
-
|
||
-#else /* ! __cplusplus */
|
||
-
|
||
-#if __STDC__
|
||
-
|
||
-#define YY_USE_PROTOS
|
||
-#define YY_USE_CONST
|
||
-
|
||
-#endif /* __STDC__ */
|
||
-#endif /* ! __cplusplus */
|
||
-
|
||
-#ifdef __TURBOC__
|
||
- #pragma warn -rch
|
||
- #pragma warn -use
|
||
-#include <io.h>
|
||
-#include <stdlib.h>
|
||
-#define YY_USE_CONST
|
||
-#define YY_USE_PROTOS
|
||
-#endif
|
||
-
|
||
-#ifdef YY_USE_CONST
|
||
-#define yyconst const
|
||
-#else
|
||
-#define yyconst
|
||
-#endif
|
||
-
|
||
-
|
||
-#ifdef YY_USE_PROTOS
|
||
-#define YY_PROTO(proto) proto
|
||
-#else
|
||
-#define YY_PROTO(proto) ()
|
||
-#endif
|
||
-
|
||
-/* Returned upon end-of-file. */
|
||
-#define YY_NULL 0
|
||
-
|
||
-/* Promotes a possibly negative, possibly signed char to an unsigned
|
||
- * integer for use as an array index. If the signed char is negative,
|
||
- * we want to instead treat it as an 8-bit unsigned char, hence the
|
||
- * double cast.
|
||
- */
|
||
-#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
|
||
-
|
||
-/* Enter a start condition. This macro really ought to take a parameter,
|
||
- * but we do it the disgusting crufty way forced on us by the ()-less
|
||
- * definition of BEGIN.
|
||
- */
|
||
-#define BEGIN yy_start = 1 + 2 *
|
||
-
|
||
-/* Translate the current start state into a value that can be later handed
|
||
- * to BEGIN to return to the state. The YYSTATE alias is for lex
|
||
- * compatibility.
|
||
- */
|
||
-#define YY_START ((yy_start - 1) / 2)
|
||
-#define YYSTATE YY_START
|
||
-
|
||
-/* Action number for EOF rule of a given start state. */
|
||
-#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
|
||
-
|
||
-/* Special action meaning "start processing a new file". */
|
||
-#define YY_NEW_FILE yyrestart( yyin )
|
||
-
|
||
-#define YY_END_OF_BUFFER_CHAR 0
|
||
-
|
||
-/* Size of default input buffer. */
|
||
-#define YY_BUF_SIZE 16384
|
||
-
|
||
-typedef struct yy_buffer_state *YY_BUFFER_STATE;
|
||
-
|
||
-extern int yyleng;
|
||
-extern FILE *yyin, *yyout;
|
||
-
|
||
-#define EOB_ACT_CONTINUE_SCAN 0
|
||
-#define EOB_ACT_END_OF_FILE 1
|
||
-#define EOB_ACT_LAST_MATCH 2
|
||
-
|
||
-/* The funky do-while in the following #define is used to turn the definition
|
||
- * int a single C statement (which needs a semi-colon terminator). This
|
||
- * avoids problems with code like:
|
||
- *
|
||
- * if ( condition_holds )
|
||
- * yyless( 5 );
|
||
- * else
|
||
- * do_something_else();
|
||
- *
|
||
- * Prior to using the do-while the compiler would get upset at the
|
||
- * "else" because it interpreted the "if" statement as being all
|
||
- * done when it reached the ';' after the yyless() call.
|
||
- */
|
||
-
|
||
-/* Return all but the first 'n' matched characters back to the input stream. */
|
||
-
|
||
-#define yyless(n) \
|
||
- do \
|
||
- { \
|
||
- /* Undo effects of setting up yytext. */ \
|
||
- *yy_cp = yy_hold_char; \
|
||
- YY_RESTORE_YY_MORE_OFFSET \
|
||
- yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
|
||
- YY_DO_BEFORE_ACTION; /* set up yytext again */ \
|
||
- } \
|
||
- while ( 0 )
|
||
-
|
||
-#define unput(c) yyunput( c, yytext_ptr )
|
||
-
|
||
-/* The following is because we cannot portably get our hands on size_t
|
||
- * (without autoconf's help, which isn't available because we want
|
||
- * flex-generated scanners to compile on their own).
|
||
- */
|
||
-typedef unsigned int yy_size_t;
|
||
-
|
||
-
|
||
-struct yy_buffer_state
|
||
- {
|
||
- FILE *yy_input_file;
|
||
-
|
||
- char *yy_ch_buf; /* input buffer */
|
||
- char *yy_buf_pos; /* current position in input buffer */
|
||
-
|
||
- /* Size of input buffer in bytes, not including room for EOB
|
||
- * characters.
|
||
- */
|
||
- yy_size_t yy_buf_size;
|
||
-
|
||
- /* Number of characters read into yy_ch_buf, not including EOB
|
||
- * characters.
|
||
- */
|
||
- int yy_n_chars;
|
||
-
|
||
- /* Whether we "own" the buffer - i.e., we know we created it,
|
||
- * and can realloc() it to grow it, and should free() it to
|
||
- * delete it.
|
||
- */
|
||
- int yy_is_our_buffer;
|
||
-
|
||
- /* Whether this is an "interactive" input source; if so, and
|
||
- * if we're using stdio for input, then we want to use getc()
|
||
- * instead of fread(), to make sure we stop fetching input after
|
||
- * each newline.
|
||
- */
|
||
- int yy_is_interactive;
|
||
-
|
||
- /* Whether we're considered to be at the beginning of a line.
|
||
- * If so, '^' rules will be active on the next match, otherwise
|
||
- * not.
|
||
- */
|
||
- int yy_at_bol;
|
||
-
|
||
- /* Whether to try to fill the input buffer when we reach the
|
||
- * end of it.
|
||
- */
|
||
- int yy_fill_buffer;
|
||
-
|
||
- int yy_buffer_status;
|
||
-#define YY_BUFFER_NEW 0
|
||
-#define YY_BUFFER_NORMAL 1
|
||
- /* When an EOF's been seen but there's still some text to process
|
||
- * then we mark the buffer as YY_EOF_PENDING, to indicate that we
|
||
- * shouldn't try reading from the input source any more. We might
|
||
- * still have a bunch of tokens to match, though, because of
|
||
- * possible backing-up.
|
||
- *
|
||
- * When we actually see the EOF, we change the status to "new"
|
||
- * (via yyrestart()), so that the user can continue scanning by
|
||
- * just pointing yyin at a new input file.
|
||
- */
|
||
-#define YY_BUFFER_EOF_PENDING 2
|
||
- };
|
||
-
|
||
-static YY_BUFFER_STATE yy_current_buffer = 0;
|
||
-
|
||
-/* We provide macros for accessing buffer states in case in the
|
||
- * future we want to put the buffer states in a more general
|
||
- * "scanner state".
|
||
- */
|
||
-#define YY_CURRENT_BUFFER yy_current_buffer
|
||
-
|
||
-
|
||
-/* yy_hold_char holds the character lost when yytext is formed. */
|
||
-static char yy_hold_char;
|
||
-
|
||
-static int yy_n_chars; /* number of characters read into yy_ch_buf */
|
||
-
|
||
-
|
||
-int yyleng;
|
||
-
|
||
-/* Points to current character in buffer. */
|
||
-static char *yy_c_buf_p = (char *) 0;
|
||
-static int yy_init = 1; /* whether we need to initialize */
|
||
-static int yy_start = 0; /* start state number */
|
||
-
|
||
-/* Flag which is used to allow yywrap()'s to do buffer switches
|
||
- * instead of setting up a fresh yyin. A bit of a hack ...
|
||
- */
|
||
-static int yy_did_buffer_switch_on_eof;
|
||
-
|
||
-void yyrestart YY_PROTO(( FILE *input_file ));
|
||
-
|
||
-void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
|
||
-void yy_load_buffer_state YY_PROTO(( void ));
|
||
-YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
|
||
-void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
|
||
-void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
|
||
-void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
|
||
-#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
|
||
-
|
||
-YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
|
||
-YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
|
||
-YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
|
||
-
|
||
-static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
|
||
-static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )) __unused;
|
||
-static void yy_flex_free YY_PROTO(( void * ));
|
||
-
|
||
-#define yy_new_buffer yy_create_buffer
|
||
-
|
||
-#define yy_set_interactive(is_interactive) \
|
||
- { \
|
||
- if ( ! yy_current_buffer ) \
|
||
- yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
|
||
- yy_current_buffer->yy_is_interactive = is_interactive; \
|
||
- }
|
||
-
|
||
-#define yy_set_bol(at_bol) \
|
||
- { \
|
||
- if ( ! yy_current_buffer ) \
|
||
- yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
|
||
- yy_current_buffer->yy_at_bol = at_bol; \
|
||
- }
|
||
-
|
||
-#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
|
||
-
|
||
-typedef unsigned char YY_CHAR;
|
||
-FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
|
||
-typedef int yy_state_type;
|
||
-extern char *yytext;
|
||
-#define yytext_ptr yytext
|
||
-
|
||
-static yy_state_type yy_get_previous_state YY_PROTO(( void ));
|
||
-static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
|
||
-static int yy_get_next_buffer YY_PROTO(( void ));
|
||
-static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
|
||
-
|
||
-/* Done after the current pattern has been matched and before the
|
||
- * corresponding action - sets up yytext.
|
||
- */
|
||
-#define YY_DO_BEFORE_ACTION \
|
||
- yytext_ptr = yy_bp; \
|
||
- yyleng = (int) (yy_cp - yy_bp); \
|
||
- yy_hold_char = *yy_cp; \
|
||
- *yy_cp = '\0'; \
|
||
- yy_c_buf_p = yy_cp;
|
||
-
|
||
-#define YY_NUM_RULES 81
|
||
-#define YY_END_OF_BUFFER 82
|
||
-static yyconst short int yy_accept[517] =
|
||
- { 0,
|
||
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||
- 0, 0, 0, 0, 82, 81, 71, 72, 81, 73,
|
||
- 76, 80, 80, 75, 74, 77, 78, 79, 80, 80,
|
||
- 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
|
||
- 80, 80, 80, 2, 2, 2, 4, 4, 4, 74,
|
||
- 80, 80, 42, 80, 80, 43, 49, 49, 49, 62,
|
||
- 62, 62, 81, 6, 6, 6, 81, 71, 0, 70,
|
||
- 73, 80, 74, 80, 74, 80, 80, 80, 80, 80,
|
||
- 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
|
||
-
|
||
- 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
|
||
- 80, 80, 80, 17, 2, 2, 2, 2, 4, 4,
|
||
- 4, 4, 8, 8, 42, 80, 42, 41, 40, 49,
|
||
- 49, 49, 49, 62, 62, 62, 62, 0, 66, 6,
|
||
- 6, 6, 6, 0, 69, 80, 80, 80, 80, 80,
|
||
- 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
|
||
- 80, 80, 53, 80, 80, 80, 80, 80, 80, 80,
|
||
- 80, 80, 52, 80, 80, 80, 80, 80, 80, 80,
|
||
- 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
|
||
- 80, 7, 80, 80, 3, 80, 80, 80, 80, 80,
|
||
-
|
||
- 80, 80, 80, 80, 80, 80, 80, 80, 5, 80,
|
||
- 80, 80, 80, 80, 80, 80, 80, 80, 80, 15,
|
||
- 80, 80, 80, 80, 80, 80, 80, 38, 80, 80,
|
||
- 80, 80, 80, 80, 80, 22, 21, 80, 80, 80,
|
||
- 80, 80, 64, 80, 80, 80, 80, 80, 80, 80,
|
||
- 80, 80, 80, 16, 80, 63, 80, 80, 80, 80,
|
||
- 80, 80, 80, 80, 8, 80, 80, 80, 80, 80,
|
||
- 80, 80, 80, 67, 80, 80, 80, 80, 80, 80,
|
||
- 80, 80, 80, 80, 80, 80, 80, 80, 19, 80,
|
||
- 10, 80, 80, 80, 80, 80, 12, 65, 80, 45,
|
||
-
|
||
- 80, 80, 59, 9, 80, 80, 80, 54, 80, 80,
|
||
- 58, 80, 68, 80, 80, 80, 61, 80, 80, 80,
|
||
- 80, 80, 80, 80, 80, 80, 80, 80, 80, 14,
|
||
- 80, 46, 57, 80, 80, 80, 80, 80, 80, 56,
|
||
- 39, 47, 80, 80, 80, 80, 80, 80, 80, 80,
|
||
- 80, 80, 50, 80, 55, 80, 80, 80, 51, 80,
|
||
- 80, 80, 80, 80, 1, 80, 80, 80, 80, 80,
|
||
- 80, 80, 80, 80, 80, 80, 80, 80, 80, 13,
|
||
- 80, 80, 80, 80, 80, 80, 80, 80, 11, 80,
|
||
- 80, 80, 80, 80, 80, 80, 24, 80, 60, 80,
|
||
-
|
||
- 80, 80, 80, 27, 80, 80, 34, 80, 18, 80,
|
||
- 80, 80, 80, 80, 80, 80, 80, 80, 80, 20,
|
||
- 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
|
||
- 80, 80, 80, 80, 80, 48, 80, 80, 80, 80,
|
||
- 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
|
||
- 80, 80, 80, 29, 80, 80, 80, 80, 80, 80,
|
||
- 80, 80, 80, 80, 80, 37, 80, 80, 31, 80,
|
||
- 80, 44, 80, 80, 80, 80, 80, 80, 80, 80,
|
||
- 80, 80, 80, 80, 80, 80, 28, 80, 80, 80,
|
||
- 25, 80, 80, 80, 23, 80, 30, 80, 80, 32,
|
||
-
|
||
- 80, 80, 80, 80, 80, 80, 80, 80, 80, 35,
|
||
- 80, 26, 80, 36, 33, 0
|
||
- } ;
|
||
-
|
||
-static yyconst int yy_ec[256] =
|
||
- { 0,
|
||
- 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
|
||
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||
- 1, 2, 1, 4, 5, 1, 1, 1, 1, 1,
|
||
- 1, 1, 1, 6, 7, 8, 9, 10, 10, 10,
|
||
- 10, 10, 11, 10, 10, 10, 10, 12, 13, 1,
|
||
- 1, 1, 1, 1, 14, 15, 16, 17, 15, 15,
|
||
- 18, 19, 18, 18, 18, 18, 20, 18, 18, 18,
|
||
- 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
|
||
- 1, 1, 1, 1, 18, 1, 21, 22, 23, 24,
|
||
-
|
||
- 25, 26, 27, 28, 29, 18, 30, 31, 32, 33,
|
||
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
|
||
- 44, 18, 45, 1, 46, 1, 1, 1, 1, 1,
|
||
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||
-
|
||
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||
- 1, 1, 1, 1, 1
|
||
- } ;
|
||
-
|
||
-static yyconst int yy_meta[47] =
|
||
- { 0,
|
||
- 1, 1, 2, 1, 1, 1, 3, 3, 1, 3,
|
||
- 3, 3, 1, 3, 3, 3, 3, 3, 3, 3,
|
||
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
||
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
||
- 3, 3, 3, 3, 1, 1
|
||
- } ;
|
||
-
|
||
-static yyconst short int yy_base[533] =
|
||
- { 0,
|
||
- 0, 46, 74, 0, 113, 159, 0, 0, 205, 251,
|
||
- 288, 0, 8, 25, 314, 360, 406, 452, 767, 766,
|
||
- 498, 544, 765, 764, 767, 772, 764, 772, 761, 0,
|
||
- 772, 0, 4, 772, 12, 772, 772, 772, 744, 0,
|
||
- 740, 4, 719, 0, 4, 736, 726, 32, 724, 5,
|
||
- 41, 44, 724, 0, 16, 66, 0, 53, 70, 583,
|
||
- 74, 76, 117, 736, 732, 772, 0, 78, 121, 0,
|
||
- 90, 125, 751, 0, 127, 131, 750, 751, 748, 772,
|
||
- 0, 0, 133, 135, 139, 737, 726, 41, 710, 716,
|
||
- 716, 714, 716, 709, 722, 704, 734, 733, 71, 695,
|
||
-
|
||
- 705, 699, 701, 696, 700, 123, 118, 701, 150, 695,
|
||
- 97, 696, 709, 0, 0, 144, 164, 169, 0, 171,
|
||
- 173, 177, 181, 717, 184, 186, 190, 0, 0, 0,
|
||
- 192, 209, 213, 0, 215, 217, 221, 724, 772, 0,
|
||
- 223, 225, 229, 723, 772, 710, 688, 690, 689, 694,
|
||
- 698, 699, 698, 694, 688, 693, 676, 208, 693, 682,
|
||
- 183, 687, 682, 676, 223, 702, 679, 676, 680, 666,
|
||
- 677, 674, 0, 671, 667, 663, 659, 669, 660, 672,
|
||
- 688, 687, 600, 10, 668, 655, 649, 665, 651, 644,
|
||
- 658, 0, 649, 215, 0, 664, 660, 645, 642, 648,
|
||
-
|
||
- 643, 642, 166, 655, 128, 670, 638, 641, 0, 54,
|
||
- 640, 641, 613, 604, 602, 605, 604, 585, 594, 0,
|
||
- 580, 213, 617, 593, 595, 565, 573, 0, 568, 589,
|
||
- 570, 559, 563, 555, 562, 0, 0, 547, 560, 554,
|
||
- 550, 555, 0, 554, 545, 544, 552, 225, 551, 542,
|
||
- 537, 530, 549, 0, 564, 0, 544, 531, 530, 528,
|
||
- 527, 540, 540, 538, 550, 544, 549, 521, 519, 517,
|
||
- 513, 518, 534, 0, 516, 528, 504, 512, 497, 514,
|
||
- 513, 499, 492, 499, 493, 495, 503, 490, 0, 501,
|
||
- 518, 490, 500, 493, 493, 481, 0, 0, 482, 0,
|
||
-
|
||
- 485, 506, 0, 509, 487, 485, 488, 482, 477, 494,
|
||
- 0, 473, 0, 451, 455, 470, 0, 459, 470, 449,
|
||
- 457, 451, 446, 453, 456, 453, 449, 455, 442, 0,
|
||
- 439, 0, 0, 444, 446, 454, 439, 450, 453, 0,
|
||
- 0, 0, 444, 447, 432, 441, 444, 447, 426, 441,
|
||
- 441, 426, 0, 418, 0, 420, 423, 413, 0, 425,
|
||
- 404, 400, 411, 408, 0, 416, 407, 402, 409, 412,
|
||
- 399, 410, 395, 401, 400, 394, 396, 390, 403, 0,
|
||
- 402, 393, 388, 417, 416, 389, 384, 382, 0, 393,
|
||
- 384, 379, 396, 371, 372, 363, 392, 391, 0, 364,
|
||
-
|
||
- 224, 389, 388, 0, 357, 354, 0, 244, 0, 358,
|
||
- 384, 352, 355, 367, 363, 352, 352, 245, 358, 0,
|
||
- 359, 348, 348, 246, 355, 346, 346, 353, 344, 354,
|
||
- 350, 338, 346, 334, 325, 0, 332, 321, 317, 322,
|
||
- 327, 314, 329, 317, 324, 315, 323, 308, 323, 319,
|
||
- 310, 300, 296, 0, 314, 309, 312, 299, 314, 309,
|
||
- 308, 303, 294, 309, 304, 0, 290, 293, 0, 296,
|
||
- 279, 0, 269, 273, 276, 271, 258, 256, 286, 254,
|
||
- 258, 252, 282, 250, 254, 248, 0, 252, 246, 276,
|
||
- 0, 249, 243, 273, 0, 258, 0, 245, 256, 0,
|
||
-
|
||
- 243, 243, 253, 241, 251, 246, 214, 213, 146, 0,
|
||
- 131, 0, 115, 0, 0, 772, 643, 646, 649, 652,
|
||
- 655, 658, 661, 664, 131, 102, 87, 18, 9, 667,
|
||
- 4, 670
|
||
- } ;
|
||
-
|
||
-static yyconst short int yy_def[533] =
|
||
- { 0,
|
||
- 517, 517, 2, 3, 518, 518, 2, 2, 519, 519,
|
||
- 2, 11, 2, 2, 520, 520, 521, 521, 2, 2,
|
||
- 522, 522, 2, 2, 516, 516, 516, 516, 523, 524,
|
||
- 516, 525, 525, 516, 525, 516, 516, 516, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 526, 526, 526, 527, 527, 527, 525,
|
||
- 60, 525, 525, 525, 525, 516, 528, 528, 528, 529,
|
||
- 529, 529, 530, 531, 531, 531, 532, 516, 523, 516,
|
||
- 524, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
-
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 526, 526, 526, 526, 527, 527,
|
||
- 527, 527, 525, 525, 525, 525, 525, 525, 525, 528,
|
||
- 528, 528, 528, 529, 529, 529, 529, 530, 516, 531,
|
||
- 531, 531, 531, 532, 516, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
-
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
-
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
-
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
-
|
||
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
|
||
- 525, 525, 525, 525, 525, 0, 516, 516, 516, 516,
|
||
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
|
||
- 516, 516
|
||
- } ;
|
||
-
|
||
-static yyconst short int yy_nxt[819] =
|
||
- { 0,
|
||
- 26, 27, 28, 29, 30, 31, 140, 33, 34, 35,
|
||
- 35, 134, 36, 83, 83, 62, 224, 63, 63, 84,
|
||
- 130, 85, 85, 87, 97, 116, 116, 98, 91, 225,
|
||
- 88, 95, 62, 96, 63, 63, 99, 92, 105, 89,
|
||
- 64, 106, 65, 93, 37, 38, 26, 27, 28, 29,
|
||
- 30, 31, 66, 33, 34, 35, 35, 64, 36, 65,
|
||
- 102, 107, 120, 120, 108, 109, 110, 148, 111, 66,
|
||
- 103, 149, 112, 117, 113, 118, 118, 121, 251, 122,
|
||
- 122, 82, 252, 124, 124, 125, 125, 131, 131, 119,
|
||
- 37, 38, 39, 160, 40, 41, 161, 42, 43, 135,
|
||
-
|
||
- 135, 44, 45, 46, 115, 47, 48, 49, 50, 162,
|
||
- 51, 52, 53, 26, 27, 28, 29, 30, 31, 179,
|
||
- 55, 34, 56, 56, 126, 36, 127, 127, 132, 180,
|
||
- 133, 133, 136, 82, 137, 137, 141, 141, 142, 515,
|
||
- 143, 143, 83, 83, 83, 83, 84, 169, 85, 85,
|
||
- 171, 246, 172, 116, 116, 514, 170, 37, 38, 26,
|
||
- 27, 28, 29, 30, 31, 247, 55, 34, 56, 56,
|
||
- 174, 36, 175, 116, 116, 176, 117, 513, 118, 118,
|
||
- 120, 120, 120, 120, 121, 177, 122, 122, 84, 243,
|
||
- 85, 85, 183, 125, 125, 125, 125, 126, 244, 127,
|
||
-
|
||
- 127, 131, 131, 37, 38, 26, 27, 28, 29, 30,
|
||
- 31, 200, 58, 34, 59, 59, 201, 36, 131, 131,
|
||
- 132, 234, 133, 133, 135, 135, 135, 135, 136, 205,
|
||
- 137, 137, 141, 141, 141, 141, 142, 512, 143, 143,
|
||
- 196, 263, 197, 264, 415, 511, 235, 416, 286, 37,
|
||
- 38, 26, 27, 28, 29, 30, 31, 206, 58, 34,
|
||
- 59, 59, 287, 36, 421, 431, 437, 422, 432, 438,
|
||
- 510, 509, 508, 507, 506, 505, 504, 503, 502, 501,
|
||
- 500, 499, 498, 497, 496, 495, 494, 493, 492, 491,
|
||
- 490, 489, 488, 487, 486, 37, 38, 60, 60, 485,
|
||
-
|
||
- 484, 61, 61, 61, 61, 483, 482, 481, 61, 61,
|
||
- 61, 61, 61, 61, 26, 27, 28, 29, 30, 31,
|
||
- 480, 68, 34, 69, 69, 479, 36, 478, 477, 476,
|
||
- 475, 474, 473, 472, 471, 470, 469, 468, 467, 466,
|
||
- 465, 464, 463, 462, 461, 460, 459, 458, 457, 456,
|
||
- 455, 454, 453, 452, 451, 450, 449, 448, 37, 38,
|
||
- 26, 27, 28, 29, 30, 31, 447, 68, 34, 69,
|
||
- 69, 446, 36, 445, 444, 443, 442, 441, 440, 439,
|
||
- 436, 435, 434, 433, 430, 429, 428, 427, 426, 425,
|
||
- 424, 423, 420, 419, 418, 417, 414, 413, 412, 411,
|
||
-
|
||
- 410, 409, 408, 407, 37, 38, 26, 27, 28, 29,
|
||
- 30, 31, 406, 71, 34, 72, 72, 405, 36, 404,
|
||
- 403, 402, 401, 400, 399, 398, 397, 396, 395, 394,
|
||
- 393, 392, 391, 390, 389, 388, 387, 386, 385, 384,
|
||
- 383, 382, 381, 380, 379, 378, 377, 376, 375, 374,
|
||
- 37, 38, 26, 27, 28, 29, 30, 31, 373, 71,
|
||
- 34, 72, 72, 372, 36, 371, 370, 369, 368, 367,
|
||
- 366, 365, 364, 363, 362, 361, 360, 359, 358, 357,
|
||
- 356, 355, 354, 353, 352, 351, 350, 349, 348, 347,
|
||
- 346, 345, 344, 343, 342, 341, 37, 38, 26, 27,
|
||
-
|
||
- 28, 29, 30, 31, 340, 75, 34, 76, 76, 339,
|
||
- 36, 338, 337, 336, 335, 334, 333, 332, 331, 330,
|
||
- 329, 328, 327, 326, 325, 324, 323, 322, 321, 320,
|
||
- 319, 318, 317, 316, 315, 314, 313, 312, 311, 310,
|
||
- 309, 308, 37, 38, 26, 27, 28, 29, 30, 31,
|
||
- 307, 75, 34, 76, 76, 306, 36, 305, 304, 303,
|
||
- 302, 183, 301, 300, 299, 298, 297, 296, 295, 294,
|
||
- 293, 292, 291, 290, 289, 288, 285, 284, 283, 282,
|
||
- 281, 280, 279, 278, 277, 276, 275, 274, 37, 38,
|
||
- 84, 273, 123, 123, 272, 271, 124, 124, 124, 124,
|
||
-
|
||
- 270, 269, 268, 124, 124, 124, 124, 124, 124, 223,
|
||
- 223, 267, 266, 223, 223, 223, 223, 262, 261, 260,
|
||
- 223, 223, 223, 223, 223, 223, 265, 265, 259, 258,
|
||
- 265, 265, 265, 265, 257, 256, 255, 265, 265, 265,
|
||
- 265, 265, 265, 32, 32, 32, 54, 54, 54, 57,
|
||
- 57, 57, 67, 67, 67, 70, 70, 70, 74, 74,
|
||
- 74, 79, 79, 79, 81, 254, 81, 138, 138, 138,
|
||
- 144, 144, 144, 253, 250, 249, 248, 245, 242, 241,
|
||
- 240, 239, 238, 237, 236, 233, 232, 231, 230, 229,
|
||
- 228, 227, 226, 222, 221, 220, 219, 218, 217, 216,
|
||
-
|
||
- 215, 214, 213, 212, 211, 210, 209, 208, 207, 204,
|
||
- 203, 202, 199, 198, 195, 194, 193, 192, 191, 190,
|
||
- 189, 188, 187, 186, 185, 184, 145, 139, 183, 182,
|
||
- 181, 178, 173, 168, 167, 166, 165, 164, 163, 159,
|
||
- 158, 157, 156, 155, 154, 153, 152, 151, 150, 147,
|
||
- 146, 80, 78, 145, 139, 129, 128, 114, 104, 101,
|
||
- 100, 94, 90, 86, 80, 78, 516, 77, 77, 73,
|
||
- 73, 25, 516, 516, 516, 516, 516, 516, 516, 516,
|
||
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
|
||
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
|
||
-
|
||
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
|
||
- 516, 516, 516, 516, 516, 516, 516, 516
|
||
- } ;
|
||
-
|
||
-static yyconst short int yy_chk[819] =
|
||
- { 0,
|
||
- 1, 1, 1, 1, 1, 1, 531, 1, 1, 1,
|
||
- 1, 529, 1, 33, 33, 13, 184, 13, 13, 35,
|
||
- 528, 35, 35, 40, 45, 55, 55, 45, 42, 184,
|
||
- 40, 44, 14, 44, 14, 14, 45, 42, 50, 40,
|
||
- 13, 50, 13, 42, 1, 1, 2, 2, 2, 2,
|
||
- 2, 2, 13, 2, 2, 2, 2, 14, 2, 14,
|
||
- 48, 51, 58, 58, 51, 51, 52, 88, 52, 14,
|
||
- 48, 88, 52, 56, 52, 56, 56, 59, 210, 59,
|
||
- 59, 61, 210, 61, 61, 62, 62, 68, 68, 527,
|
||
- 2, 2, 3, 99, 3, 3, 99, 3, 3, 71,
|
||
-
|
||
- 71, 3, 3, 3, 526, 3, 3, 3, 3, 99,
|
||
- 3, 3, 3, 5, 5, 5, 5, 5, 5, 111,
|
||
- 5, 5, 5, 5, 63, 5, 63, 63, 69, 111,
|
||
- 69, 69, 72, 525, 72, 72, 75, 75, 76, 513,
|
||
- 76, 76, 83, 83, 84, 84, 85, 106, 85, 85,
|
||
- 107, 205, 107, 116, 116, 511, 106, 5, 5, 6,
|
||
- 6, 6, 6, 6, 6, 205, 6, 6, 6, 6,
|
||
- 109, 6, 109, 117, 117, 109, 118, 509, 118, 118,
|
||
- 120, 120, 121, 121, 122, 109, 122, 122, 123, 203,
|
||
- 123, 123, 123, 125, 125, 126, 126, 127, 203, 127,
|
||
-
|
||
- 127, 131, 131, 6, 6, 9, 9, 9, 9, 9,
|
||
- 9, 161, 9, 9, 9, 9, 161, 9, 132, 132,
|
||
- 133, 194, 133, 133, 135, 135, 136, 136, 137, 165,
|
||
- 137, 137, 141, 141, 142, 142, 143, 508, 143, 143,
|
||
- 158, 222, 158, 222, 401, 507, 194, 401, 248, 9,
|
||
- 9, 10, 10, 10, 10, 10, 10, 165, 10, 10,
|
||
- 10, 10, 248, 10, 408, 418, 424, 408, 418, 424,
|
||
- 506, 505, 504, 503, 502, 501, 499, 498, 496, 494,
|
||
- 493, 492, 490, 489, 488, 486, 485, 484, 483, 482,
|
||
- 481, 480, 479, 478, 477, 10, 10, 11, 11, 476,
|
||
-
|
||
- 475, 11, 11, 11, 11, 474, 473, 471, 11, 11,
|
||
- 11, 11, 11, 11, 15, 15, 15, 15, 15, 15,
|
||
- 470, 15, 15, 15, 15, 468, 15, 467, 465, 464,
|
||
- 463, 462, 461, 460, 459, 458, 457, 456, 455, 453,
|
||
- 452, 451, 450, 449, 448, 447, 446, 445, 444, 443,
|
||
- 442, 441, 440, 439, 438, 437, 435, 434, 15, 15,
|
||
- 16, 16, 16, 16, 16, 16, 433, 16, 16, 16,
|
||
- 16, 432, 16, 431, 430, 429, 428, 427, 426, 425,
|
||
- 423, 422, 421, 419, 417, 416, 415, 414, 413, 412,
|
||
- 411, 410, 406, 405, 403, 402, 400, 398, 397, 396,
|
||
-
|
||
- 395, 394, 393, 392, 16, 16, 17, 17, 17, 17,
|
||
- 17, 17, 391, 17, 17, 17, 17, 390, 17, 388,
|
||
- 387, 386, 385, 384, 383, 382, 381, 379, 378, 377,
|
||
- 376, 375, 374, 373, 372, 371, 370, 369, 368, 367,
|
||
- 366, 364, 363, 362, 361, 360, 358, 357, 356, 354,
|
||
- 17, 17, 18, 18, 18, 18, 18, 18, 352, 18,
|
||
- 18, 18, 18, 351, 18, 350, 349, 348, 347, 346,
|
||
- 345, 344, 343, 339, 338, 337, 336, 335, 334, 331,
|
||
- 329, 328, 327, 326, 325, 324, 323, 322, 321, 320,
|
||
- 319, 318, 316, 315, 314, 312, 18, 18, 21, 21,
|
||
-
|
||
- 21, 21, 21, 21, 310, 21, 21, 21, 21, 309,
|
||
- 21, 308, 307, 306, 305, 304, 302, 301, 299, 296,
|
||
- 295, 294, 293, 292, 291, 290, 288, 287, 286, 285,
|
||
- 284, 283, 282, 281, 280, 279, 278, 277, 276, 275,
|
||
- 273, 272, 21, 21, 22, 22, 22, 22, 22, 22,
|
||
- 271, 22, 22, 22, 22, 270, 22, 269, 268, 267,
|
||
- 266, 265, 264, 263, 262, 261, 260, 259, 258, 257,
|
||
- 255, 253, 252, 251, 250, 249, 247, 246, 245, 244,
|
||
- 242, 241, 240, 239, 238, 235, 234, 233, 22, 22,
|
||
- 60, 232, 60, 60, 231, 230, 60, 60, 60, 60,
|
||
-
|
||
- 229, 227, 226, 60, 60, 60, 60, 60, 60, 183,
|
||
- 183, 225, 224, 183, 183, 183, 183, 221, 219, 218,
|
||
- 183, 183, 183, 183, 183, 183, 223, 223, 217, 216,
|
||
- 223, 223, 223, 223, 215, 214, 213, 223, 223, 223,
|
||
- 223, 223, 223, 517, 517, 517, 518, 518, 518, 519,
|
||
- 519, 519, 520, 520, 520, 521, 521, 521, 522, 522,
|
||
- 522, 523, 523, 523, 524, 212, 524, 530, 530, 530,
|
||
- 532, 532, 532, 211, 208, 207, 206, 204, 202, 201,
|
||
- 200, 199, 198, 197, 196, 193, 191, 190, 189, 188,
|
||
- 187, 186, 185, 182, 181, 180, 179, 178, 177, 176,
|
||
-
|
||
- 175, 174, 172, 171, 170, 169, 168, 167, 166, 164,
|
||
- 163, 162, 160, 159, 157, 156, 155, 154, 153, 152,
|
||
- 151, 150, 149, 148, 147, 146, 144, 138, 124, 113,
|
||
- 112, 110, 108, 105, 104, 103, 102, 101, 100, 98,
|
||
- 97, 96, 95, 94, 93, 92, 91, 90, 89, 87,
|
||
- 86, 79, 78, 77, 73, 65, 64, 53, 49, 47,
|
||
- 46, 43, 41, 39, 29, 27, 25, 24, 23, 20,
|
||
- 19, 516, 516, 516, 516, 516, 516, 516, 516, 516,
|
||
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
|
||
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
|
||
-
|
||
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
|
||
- 516, 516, 516, 516, 516, 516, 516, 516
|
||
- } ;
|
||
-
|
||
-static yy_state_type yy_last_accepting_state;
|
||
-static char *yy_last_accepting_cpos;
|
||
-
|
||
-/* The intent behind this definition is that it'll catch
|
||
- * any uses of REJECT which flex missed.
|
||
- */
|
||
-#define REJECT reject_used_but_not_detected
|
||
-#define yymore() yymore_used_but_not_detected
|
||
-#define YY_MORE_ADJ 0
|
||
-#define YY_RESTORE_YY_MORE_OFFSET
|
||
-char *yytext;
|
||
-#line 1 "cftoken.l"
|
||
-#define INITIAL 0
|
||
-/* $KAME: cftoken.l,v 1.35 2005/01/12 06:06:11 suz Exp $ */
|
||
-#line 4 "cftoken.l"
|
||
-/*
|
||
- * Copyright (C) 2002 WIDE Project.
|
||
- * All rights reserved.
|
||
- *
|
||
- * Redistribution and use in source and binary forms, with or without
|
||
- * modification, are permitted provided that the following conditions
|
||
- * are met:
|
||
- * 1. Redistributions of source code must retain the above copyright
|
||
- * notice, this list of conditions and the following disclaimer.
|
||
- * 2. Redistributions in binary form must reproduce the above copyright
|
||
- * notice, this list of conditions and the following disclaimer in the
|
||
- * documentation and/or other materials provided with the distribution.
|
||
- * 3. Neither the name of the project nor the names of its contributors
|
||
- * may be used to endorse or promote products derived from this software
|
||
- * without specific prior written permission.
|
||
- *
|
||
- * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
|
||
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||
- * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
|
||
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||
- * SUCH DAMAGE.
|
||
- */
|
||
-#include <sys/types.h>
|
||
-#include <sys/param.h>
|
||
-#include <sys/socket.h>
|
||
-#include <sys/queue.h>
|
||
-#include <sys/time.h>
|
||
-
|
||
-#include <netinet/in.h>
|
||
-
|
||
-#include <errno.h>
|
||
-#include <syslog.h>
|
||
-#include <string.h>
|
||
-#ifdef HAVE_STDARG_H
|
||
-#include <stdarg.h>
|
||
-#else
|
||
-#include <varargs.h>
|
||
-#endif
|
||
-
|
||
-#include "dhcp6.h"
|
||
-#include "config.h"
|
||
-#include "common.h"
|
||
-#include "y.tab.h"
|
||
-
|
||
-#define YY_NO_UNPUT 1
|
||
-
|
||
-char *configfilename;
|
||
-int lineno = 1;
|
||
-
|
||
-
|
||
-/* Recursion limit for includes */
|
||
-#define MAX_INCLUDE_DEPTH 10
|
||
-
|
||
-static struct include_stack {
|
||
- char *path;
|
||
- YY_BUFFER_STATE state;
|
||
- int lineno;
|
||
-} incstack[MAX_INCLUDE_DEPTH];
|
||
-int incstackp = 0;
|
||
-
|
||
-
|
||
-static int yy_first_time = 1;
|
||
-static int yyerrorcount = 0;
|
||
-
|
||
-#ifndef NOCONFIG_DEBUG
|
||
-#define YYDEBUG 1
|
||
-
|
||
-int cfdebug = 1;
|
||
-#else
|
||
-int cfdebug = 0;
|
||
-#endif
|
||
-
|
||
-extern int yyparse __P((void));
|
||
-extern int cf_post_config __P((void));
|
||
-
|
||
-static void cfdebug_print __P((char *, char *, int));
|
||
-
|
||
-#define DP(str) if (cfdebug) cfdebug_print(str, yytext, yyleng)
|
||
-#define DECHO if (cfdebug) cfdebug_print(NULL, yytext, yyleng);
|
||
-#define DNOECHO if (cfdebug) cfdebug_print(NULL, "****", yyleng);
|
||
-/* abbreviations */
|
||
-#define S_CNF 1
|
||
-
|
||
-#define S_IFACE 2
|
||
-
|
||
-#define S_PREF 3
|
||
-
|
||
-#define S_HOST 4
|
||
-
|
||
-#define S_DUID 5
|
||
-
|
||
-#define S_IA 6
|
||
-
|
||
-#define S_AUTH 7
|
||
-
|
||
-#define S_KEY 8
|
||
-
|
||
-#define S_SECRET 9
|
||
-
|
||
-#define S_ADDRPOOL 10
|
||
-
|
||
-#define S_INCL 11
|
||
-
|
||
-#line 835 "lex.yy.c"
|
||
-
|
||
-/* Macros after this point can all be overridden by user definitions in
|
||
- * section 1.
|
||
- */
|
||
-
|
||
-#ifndef YY_SKIP_YYWRAP
|
||
-#ifdef __cplusplus
|
||
-extern "C" int yywrap YY_PROTO(( void ));
|
||
-#else
|
||
-extern int yywrap YY_PROTO(( void ));
|
||
-#endif
|
||
-#endif
|
||
-
|
||
-#ifndef YY_NO_UNPUT
|
||
-static void yyunput YY_PROTO(( int c, char *buf_ptr ));
|
||
-#endif
|
||
-
|
||
-#ifndef yytext_ptr
|
||
-static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
|
||
-#endif
|
||
-
|
||
-#ifdef YY_NEED_STRLEN
|
||
-static int yy_flex_strlen YY_PROTO(( yyconst char * ));
|
||
-#endif
|
||
-
|
||
-#ifndef YY_NO_INPUT
|
||
-#ifdef __cplusplus
|
||
-static int yyinput YY_PROTO(( void ));
|
||
-#else
|
||
-static int input YY_PROTO(( void ));
|
||
-#endif
|
||
-#endif
|
||
-
|
||
-#if YY_STACK_USED
|
||
-static int yy_start_stack_ptr = 0;
|
||
-static int yy_start_stack_depth = 0;
|
||
-static int *yy_start_stack = 0;
|
||
-#ifndef YY_NO_PUSH_STATE
|
||
-static void yy_push_state YY_PROTO(( int new_state ));
|
||
-#endif
|
||
-#ifndef YY_NO_POP_STATE
|
||
-static void yy_pop_state YY_PROTO(( void ));
|
||
-#endif
|
||
-#ifndef YY_NO_TOP_STATE
|
||
-static int yy_top_state YY_PROTO(( void ));
|
||
-#endif
|
||
-
|
||
-#else
|
||
-#define YY_NO_PUSH_STATE 1
|
||
-#define YY_NO_POP_STATE 1
|
||
-#define YY_NO_TOP_STATE 1
|
||
-#endif
|
||
-
|
||
-#ifdef YY_MALLOC_DECL
|
||
-YY_MALLOC_DECL
|
||
-#else
|
||
-#if __STDC__
|
||
-#ifndef __cplusplus
|
||
-#include <stdlib.h>
|
||
-#endif
|
||
-#else
|
||
-/* Just try to get by without declaring the routines. This will fail
|
||
- * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
|
||
- * or sizeof(void*) != sizeof(int).
|
||
- */
|
||
-#endif
|
||
-#endif
|
||
-
|
||
-/* Amount of stuff to slurp up with each read. */
|
||
-#ifndef YY_READ_BUF_SIZE
|
||
-#define YY_READ_BUF_SIZE 8192
|
||
-#endif
|
||
-
|
||
-/* Copy whatever the last rule matched to the standard output. */
|
||
-
|
||
-#ifndef ECHO
|
||
-/* This used to be an fputs(), but since the string might contain NUL's,
|
||
- * we now use fwrite().
|
||
- */
|
||
-#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
|
||
-#endif
|
||
-
|
||
-/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
|
||
- * is returned in "result".
|
||
- */
|
||
-#ifndef YY_INPUT
|
||
-#define YY_INPUT(buf,result,max_size) \
|
||
- if ( yy_current_buffer->yy_is_interactive ) \
|
||
- { \
|
||
- int c = '*', n; \
|
||
- for ( n = 0; n < max_size && \
|
||
- (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
|
||
- buf[n] = (char) c; \
|
||
- if ( c == '\n' ) \
|
||
- buf[n++] = (char) c; \
|
||
- if ( c == EOF && ferror( yyin ) ) \
|
||
- YY_FATAL_ERROR( "input in flex scanner failed" ); \
|
||
- result = n; \
|
||
- } \
|
||
- else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
|
||
- && ferror( yyin ) ) \
|
||
- YY_FATAL_ERROR( "input in flex scanner failed" );
|
||
-#endif
|
||
-
|
||
-/* No semi-colon after return; correct usage is to write "yyterminate();" -
|
||
- * we don't want an extra ';' after the "return" because that will cause
|
||
- * some compilers to complain about unreachable statements.
|
||
- */
|
||
-#ifndef yyterminate
|
||
-#define yyterminate() return YY_NULL
|
||
-#endif
|
||
-
|
||
-/* Number of entries by which start-condition stack grows. */
|
||
-#ifndef YY_START_STACK_INCR
|
||
-#define YY_START_STACK_INCR 25
|
||
-#endif
|
||
-
|
||
-/* Report a fatal error. */
|
||
-#ifndef YY_FATAL_ERROR
|
||
-#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
|
||
-#endif
|
||
-
|
||
-/* Default declaration of generated scanner - a define so the user can
|
||
- * easily add parameters.
|
||
- */
|
||
-#ifndef YY_DECL
|
||
-#define YY_DECL int yylex YY_PROTO(( void ))
|
||
-#endif
|
||
-
|
||
-/* Code executed at the beginning of each rule, after yytext and yyleng
|
||
- * have been set up.
|
||
- */
|
||
-#ifndef YY_USER_ACTION
|
||
-#define YY_USER_ACTION
|
||
-#endif
|
||
-
|
||
-/* Code executed at the end of each rule. */
|
||
-#ifndef YY_BREAK
|
||
-#define YY_BREAK break;
|
||
-#endif
|
||
-
|
||
-#define YY_RULE_SETUP \
|
||
- YY_USER_ACTION
|
||
-
|
||
-YY_DECL
|
||
- {
|
||
- register yy_state_type yy_current_state;
|
||
- register char *yy_cp, *yy_bp;
|
||
- register int yy_act;
|
||
-
|
||
-#line 124 "cftoken.l"
|
||
-
|
||
-
|
||
- if (yy_first_time) {
|
||
- BEGIN S_CNF;
|
||
- yy_first_time = 0;
|
||
- }
|
||
-
|
||
- /* interface configuration */
|
||
-#line 995 "lex.yy.c"
|
||
-
|
||
- if ( yy_init )
|
||
- {
|
||
- yy_init = 0;
|
||
-
|
||
-#ifdef YY_USER_INIT
|
||
- YY_USER_INIT;
|
||
-#endif
|
||
-
|
||
- if ( ! yy_start )
|
||
- yy_start = 1; /* first start state */
|
||
-
|
||
- if ( ! yyin )
|
||
- yyin = stdin;
|
||
-
|
||
- if ( ! yyout )
|
||
- yyout = stdout;
|
||
-
|
||
- if ( ! yy_current_buffer )
|
||
- yy_current_buffer =
|
||
- yy_create_buffer( yyin, YY_BUF_SIZE );
|
||
-
|
||
- yy_load_buffer_state();
|
||
- }
|
||
-
|
||
- while ( 1 ) /* loops until end-of-file is reached */
|
||
- {
|
||
- yy_cp = yy_c_buf_p;
|
||
-
|
||
- /* Support of yytext. */
|
||
- *yy_cp = yy_hold_char;
|
||
-
|
||
- /* yy_bp points to the position in yy_ch_buf of the start of
|
||
- * the current run.
|
||
- */
|
||
- yy_bp = yy_cp;
|
||
-
|
||
- yy_current_state = yy_start;
|
||
-yy_match:
|
||
- do
|
||
- {
|
||
- register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
|
||
- if ( yy_accept[yy_current_state] )
|
||
- {
|
||
- yy_last_accepting_state = yy_current_state;
|
||
- yy_last_accepting_cpos = yy_cp;
|
||
- }
|
||
- while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
|
||
- {
|
||
- yy_current_state = (int) yy_def[yy_current_state];
|
||
- if ( yy_current_state >= 517 )
|
||
- yy_c = yy_meta[(unsigned int) yy_c];
|
||
- }
|
||
- yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
|
||
- ++yy_cp;
|
||
- }
|
||
- while ( yy_base[yy_current_state] != 772 );
|
||
-
|
||
-yy_find_action:
|
||
- yy_act = yy_accept[yy_current_state];
|
||
- if ( yy_act == 0 )
|
||
- { /* have to back up */
|
||
- yy_cp = yy_last_accepting_cpos;
|
||
- yy_current_state = yy_last_accepting_state;
|
||
- yy_act = yy_accept[yy_current_state];
|
||
- }
|
||
-
|
||
- YY_DO_BEFORE_ACTION;
|
||
-
|
||
-
|
||
-do_action: /* This label is used only to access EOF actions. */
|
||
-
|
||
-
|
||
- switch ( yy_act )
|
||
- { /* beginning of action switch */
|
||
- case 0: /* must back up */
|
||
- /* undo the effects of YY_DO_BEFORE_ACTION */
|
||
- *yy_cp = yy_hold_char;
|
||
- yy_cp = yy_last_accepting_cpos;
|
||
- yy_current_state = yy_last_accepting_state;
|
||
- goto yy_find_action;
|
||
-
|
||
-case 1:
|
||
-YY_RULE_SETUP
|
||
-#line 132 "cftoken.l"
|
||
-{ DECHO; BEGIN S_IFACE; return (INTERFACE); }
|
||
- YY_BREAK
|
||
-case 2:
|
||
-YY_RULE_SETUP
|
||
-#line 133 "cftoken.l"
|
||
-{
|
||
- DECHO;
|
||
- yylval.str = strdup(yytext);
|
||
- BEGIN S_CNF;
|
||
- return (IFNAME);
|
||
-}
|
||
- YY_BREAK
|
||
-/* host configuration */
|
||
-case 3:
|
||
-YY_RULE_SETUP
|
||
-#line 141 "cftoken.l"
|
||
-{ DECHO; BEGIN S_HOST; return (HOST); }
|
||
- YY_BREAK
|
||
-case 4:
|
||
-YY_RULE_SETUP
|
||
-#line 142 "cftoken.l"
|
||
-{
|
||
- DECHO;
|
||
- yylval.str = strdup(yytext);
|
||
- BEGIN S_CNF;
|
||
- return (HOSTNAME);
|
||
-}
|
||
- YY_BREAK
|
||
-/* address pool configuration */
|
||
-case 5:
|
||
-YY_RULE_SETUP
|
||
-#line 150 "cftoken.l"
|
||
-{ DECHO; BEGIN S_ADDRPOOL; return (ADDRPOOL); }
|
||
- YY_BREAK
|
||
-case 6:
|
||
-YY_RULE_SETUP
|
||
-#line 152 "cftoken.l"
|
||
-{
|
||
- DECHO;
|
||
- yylval.str = strdup(yytext);
|
||
- BEGIN S_CNF;
|
||
- return (POOLNAME);
|
||
-}
|
||
- YY_BREAK
|
||
-case 7:
|
||
-YY_RULE_SETUP
|
||
-#line 159 "cftoken.l"
|
||
-{ DECHO; BEGIN S_DUID; return (DUID); }
|
||
- YY_BREAK
|
||
-case 8:
|
||
-YY_RULE_SETUP
|
||
-#line 160 "cftoken.l"
|
||
-{
|
||
- DECHO;
|
||
- yylval.str = strdup(yytext);
|
||
- BEGIN S_CNF;
|
||
- return (DUID_ID);
|
||
-}
|
||
- YY_BREAK
|
||
-case 9:
|
||
-YY_RULE_SETUP
|
||
-#line 167 "cftoken.l"
|
||
-{ DECHO; return (ADDRESS); }
|
||
- YY_BREAK
|
||
-case 10:
|
||
-YY_RULE_SETUP
|
||
-#line 169 "cftoken.l"
|
||
-{ DECHO; return (PREFIX); }
|
||
- YY_BREAK
|
||
-case 11:
|
||
-YY_RULE_SETUP
|
||
-#line 171 "cftoken.l"
|
||
-{ DECHO; return (PREFERENCE); }
|
||
- YY_BREAK
|
||
-case 12:
|
||
-YY_RULE_SETUP
|
||
-#line 173 "cftoken.l"
|
||
-{ DECHO; return (SCRIPT); }
|
||
- YY_BREAK
|
||
-case 13:
|
||
-YY_RULE_SETUP
|
||
-#line 175 "cftoken.l"
|
||
-{ DECHO; return (DELAYEDKEY); }
|
||
- YY_BREAK
|
||
-/* request */
|
||
-case 14:
|
||
-YY_RULE_SETUP
|
||
-#line 178 "cftoken.l"
|
||
-{ DECHO; return (REQUEST); }
|
||
- YY_BREAK
|
||
-/* send */
|
||
-case 15:
|
||
-YY_RULE_SETUP
|
||
-#line 181 "cftoken.l"
|
||
-{ DECHO; return (SEND); }
|
||
- YY_BREAK
|
||
-/* range */
|
||
-case 16:
|
||
-YY_RULE_SETUP
|
||
-#line 184 "cftoken.l"
|
||
-{ DECHO; return (RANGE); }
|
||
- YY_BREAK
|
||
-case 17:
|
||
-YY_RULE_SETUP
|
||
-#line 185 "cftoken.l"
|
||
-{ DECHO; return (TO); }
|
||
- YY_BREAK
|
||
-/* address-pool */
|
||
-case 18:
|
||
-YY_RULE_SETUP
|
||
-#line 188 "cftoken.l"
|
||
-{ DECHO; return (ADDRESS_POOL); }
|
||
- YY_BREAK
|
||
-/* DHCP options */
|
||
-case 19:
|
||
-YY_RULE_SETUP
|
||
-#line 191 "cftoken.l"
|
||
-{ DECHO; return (OPTION); }
|
||
- YY_BREAK
|
||
-case 20:
|
||
-YY_RULE_SETUP
|
||
-#line 193 "cftoken.l"
|
||
-{ DECHO; return (RAPID_COMMIT); }
|
||
- YY_BREAK
|
||
-case 21:
|
||
-YY_RULE_SETUP
|
||
-#line 194 "cftoken.l"
|
||
-{ DECHO; return (IA_PD); }
|
||
- YY_BREAK
|
||
-case 22:
|
||
-YY_RULE_SETUP
|
||
-#line 195 "cftoken.l"
|
||
-{ DECHO; return (IA_NA); }
|
||
- YY_BREAK
|
||
-case 23:
|
||
-YY_RULE_SETUP
|
||
-#line 196 "cftoken.l"
|
||
-{ DECHO; return (DNS_SERVERS); }
|
||
- YY_BREAK
|
||
-case 24:
|
||
-YY_RULE_SETUP
|
||
-#line 197 "cftoken.l"
|
||
-{ DECHO; return (DNS_NAME); }
|
||
- YY_BREAK
|
||
-case 25:
|
||
-YY_RULE_SETUP
|
||
-#line 198 "cftoken.l"
|
||
-{ DECHO; return (SIP_SERVERS); }
|
||
- YY_BREAK
|
||
-case 26:
|
||
-YY_RULE_SETUP
|
||
-#line 199 "cftoken.l"
|
||
-{ DECHO; return (SIP_NAME); }
|
||
- YY_BREAK
|
||
-case 27:
|
||
-YY_RULE_SETUP
|
||
-#line 200 "cftoken.l"
|
||
-{ DECHO; return (NTP_SERVERS); }
|
||
- YY_BREAK
|
||
-case 28:
|
||
-YY_RULE_SETUP
|
||
-#line 201 "cftoken.l"
|
||
-{ DECHO; return (NIS_SERVERS); }
|
||
- YY_BREAK
|
||
-case 29:
|
||
-YY_RULE_SETUP
|
||
-#line 202 "cftoken.l"
|
||
-{ DECHO; return (NIS_NAME); }
|
||
- YY_BREAK
|
||
-case 30:
|
||
-YY_RULE_SETUP
|
||
-#line 203 "cftoken.l"
|
||
-{ DECHO; return (NISP_SERVERS); }
|
||
- YY_BREAK
|
||
-case 31:
|
||
-YY_RULE_SETUP
|
||
-#line 204 "cftoken.l"
|
||
-{ DECHO; return (NISP_NAME); }
|
||
- YY_BREAK
|
||
-case 32:
|
||
-YY_RULE_SETUP
|
||
-#line 205 "cftoken.l"
|
||
-{ DECHO; return (BCMCS_SERVERS); }
|
||
- YY_BREAK
|
||
-case 33:
|
||
-YY_RULE_SETUP
|
||
-#line 206 "cftoken.l"
|
||
-{ DECHO; return (BCMCS_NAME); }
|
||
- YY_BREAK
|
||
-case 34:
|
||
-YY_RULE_SETUP
|
||
-#line 207 "cftoken.l"
|
||
-{ DECHO; return (REFRESHTIME); }
|
||
- YY_BREAK
|
||
-/* provided for a backward compatibility to WIDE-DHCPv6 before Oct 1 2006 */
|
||
-case 35:
|
||
-YY_RULE_SETUP
|
||
-#line 210 "cftoken.l"
|
||
-{ DECHO; return (NIS_NAME); }
|
||
- YY_BREAK
|
||
-case 36:
|
||
-YY_RULE_SETUP
|
||
-#line 211 "cftoken.l"
|
||
-{ DECHO; return (NISP_NAME); }
|
||
- YY_BREAK
|
||
-/* generic options */
|
||
-case 37:
|
||
-YY_RULE_SETUP
|
||
-#line 214 "cftoken.l"
|
||
-{ DECHO; return (INFO_ONLY); }
|
||
- YY_BREAK
|
||
-case 38:
|
||
-YY_RULE_SETUP
|
||
-#line 216 "cftoken.l"
|
||
-{ DECHO; return (ALLOW); }
|
||
- YY_BREAK
|
||
-/* identity association */
|
||
-case 39:
|
||
-YY_RULE_SETUP
|
||
-#line 219 "cftoken.l"
|
||
-{ DECHO; BEGIN S_IA; return(ID_ASSOC); }
|
||
- YY_BREAK
|
||
-case 40:
|
||
-YY_RULE_SETUP
|
||
-#line 220 "cftoken.l"
|
||
-{ DECHO; return(IA_PD); }
|
||
- YY_BREAK
|
||
-case 41:
|
||
-YY_RULE_SETUP
|
||
-#line 221 "cftoken.l"
|
||
-{ DECHO; return(IA_NA); }
|
||
- YY_BREAK
|
||
-case 42:
|
||
-YY_RULE_SETUP
|
||
-#line 222 "cftoken.l"
|
||
-{ DECHO; yylval.str = strdup(yytext); return(IAID); }
|
||
- YY_BREAK
|
||
-case 43:
|
||
-YY_RULE_SETUP
|
||
-#line 223 "cftoken.l"
|
||
-{ DP("begin of closure"); BEGIN S_CNF; return (BCL); }
|
||
- YY_BREAK
|
||
-/*
|
||
- * interface parameters for delegated prefix configuration.
|
||
- * when lex reads an interface name, the state will be back to
|
||
- * S_CNF.
|
||
- */
|
||
-case 44:
|
||
-YY_RULE_SETUP
|
||
-#line 230 "cftoken.l"
|
||
-{ DECHO; BEGIN S_IFACE; return (PREFIX_INTERFACE); }
|
||
- YY_BREAK
|
||
-case 45:
|
||
-YY_RULE_SETUP
|
||
-#line 231 "cftoken.l"
|
||
-{ DECHO; return (SLA_ID); }
|
||
- YY_BREAK
|
||
-case 46:
|
||
-YY_RULE_SETUP
|
||
-#line 232 "cftoken.l"
|
||
-{ DECHO; return (SLA_LEN); }
|
||
- YY_BREAK
|
||
-/* duration */
|
||
-case 47:
|
||
-YY_RULE_SETUP
|
||
-#line 235 "cftoken.l"
|
||
-{ DECHO; return (INFINITY); }
|
||
- YY_BREAK
|
||
-/* authentication option */
|
||
-case 48:
|
||
-YY_RULE_SETUP
|
||
-#line 238 "cftoken.l"
|
||
-{ DECHO; BEGIN S_AUTH; return (AUTHENTICATION); }
|
||
- YY_BREAK
|
||
-case 49:
|
||
-YY_RULE_SETUP
|
||
-#line 239 "cftoken.l"
|
||
-{
|
||
- DECHO;
|
||
- yylval.str = strdup(yytext);
|
||
- BEGIN S_CNF;
|
||
- return (AUTHNAME);
|
||
-}
|
||
- YY_BREAK
|
||
-/* authentication parameters */
|
||
-case 50:
|
||
-YY_RULE_SETUP
|
||
-#line 247 "cftoken.l"
|
||
-{ DECHO; return (PROTOCOL); };
|
||
- YY_BREAK
|
||
-case 51:
|
||
-YY_RULE_SETUP
|
||
-#line 248 "cftoken.l"
|
||
-{ DECHO; return (ALGORITHM); };
|
||
- YY_BREAK
|
||
-case 52:
|
||
-YY_RULE_SETUP
|
||
-#line 249 "cftoken.l"
|
||
-{ DECHO; return (RDM); };
|
||
- YY_BREAK
|
||
-case 53:
|
||
-YY_RULE_SETUP
|
||
-#line 250 "cftoken.l"
|
||
-{ DECHO; return (KEY); };
|
||
- YY_BREAK
|
||
-/* authentication protocols */
|
||
-case 54:
|
||
-YY_RULE_SETUP
|
||
-#line 253 "cftoken.l"
|
||
-{ DECHO; return (DELAYED); };
|
||
- YY_BREAK
|
||
-case 55:
|
||
-YY_RULE_SETUP
|
||
-#line 254 "cftoken.l"
|
||
-{ DECHO; return (RECONFIG); };
|
||
- YY_BREAK
|
||
-/* authentication algorithms */
|
||
-case 56:
|
||
-YY_RULE_SETUP
|
||
-#line 257 "cftoken.l"
|
||
-{ DECHO; return (HMACMD5); };
|
||
- YY_BREAK
|
||
-case 57:
|
||
-YY_RULE_SETUP
|
||
-#line 258 "cftoken.l"
|
||
-{ DECHO; return (HMACMD5); };
|
||
- YY_BREAK
|
||
-case 58:
|
||
-YY_RULE_SETUP
|
||
-#line 259 "cftoken.l"
|
||
-{ DECHO; return (HMACMD5); };
|
||
- YY_BREAK
|
||
-case 59:
|
||
-YY_RULE_SETUP
|
||
-#line 260 "cftoken.l"
|
||
-{ DECHO; return (HMACMD5); };
|
||
- YY_BREAK
|
||
-/* authentication RDM */
|
||
-case 60:
|
||
-YY_RULE_SETUP
|
||
-#line 263 "cftoken.l"
|
||
-{ DECHO; return (MONOCOUNTER); };
|
||
- YY_BREAK
|
||
-/* secret keys */
|
||
-case 61:
|
||
-YY_RULE_SETUP
|
||
-#line 266 "cftoken.l"
|
||
-{ DECHO; BEGIN S_KEY; return (KEYINFO); }
|
||
- YY_BREAK
|
||
-case 62:
|
||
-YY_RULE_SETUP
|
||
-#line 267 "cftoken.l"
|
||
-{
|
||
- DECHO;
|
||
- yylval.str = strdup(yytext);
|
||
- BEGIN S_CNF;
|
||
- return (KEYNAME);
|
||
-}
|
||
- YY_BREAK
|
||
-/* key parameters */
|
||
-case 63:
|
||
-YY_RULE_SETUP
|
||
-#line 275 "cftoken.l"
|
||
-{ DECHO; return (REALM); }
|
||
- YY_BREAK
|
||
-case 64:
|
||
-YY_RULE_SETUP
|
||
-#line 276 "cftoken.l"
|
||
-{ DECHO; return (KEYID); }
|
||
- YY_BREAK
|
||
-case 65:
|
||
-YY_RULE_SETUP
|
||
-#line 277 "cftoken.l"
|
||
-{ DECHO; BEGIN S_SECRET; return (SECRET); }
|
||
- YY_BREAK
|
||
-case 66:
|
||
-YY_RULE_SETUP
|
||
-#line 278 "cftoken.l"
|
||
-{
|
||
- DNOECHO;
|
||
- yylval.str = strdup(yytext);
|
||
- BEGIN S_CNF;
|
||
- return (QSTRING);
|
||
-}
|
||
- YY_BREAK
|
||
-case 67:
|
||
-YY_RULE_SETUP
|
||
-#line 284 "cftoken.l"
|
||
-{ DECHO; return (EXPIRE); }
|
||
- YY_BREAK
|
||
-/* include */
|
||
-case 68:
|
||
-YY_RULE_SETUP
|
||
-#line 287 "cftoken.l"
|
||
-{ DECHO; BEGIN S_INCL; return (INCLUDE); }
|
||
- YY_BREAK
|
||
-case 69:
|
||
-YY_RULE_SETUP
|
||
-#line 288 "cftoken.l"
|
||
-{
|
||
- DECHO;
|
||
- yylval.str = strdup(yytext);
|
||
- BEGIN S_CNF;
|
||
- return (QSTRING);
|
||
-}
|
||
- YY_BREAK
|
||
-/* quoted string */
|
||
-case 70:
|
||
-YY_RULE_SETUP
|
||
-#line 296 "cftoken.l"
|
||
-{
|
||
- DECHO;
|
||
- yylval.str = strdup(yytext);
|
||
- return (QSTRING);
|
||
- }
|
||
- YY_BREAK
|
||
-/* misc */
|
||
-case 71:
|
||
-YY_RULE_SETUP
|
||
-#line 303 "cftoken.l"
|
||
-{ ; }
|
||
- YY_BREAK
|
||
-case 72:
|
||
-YY_RULE_SETUP
|
||
-#line 304 "cftoken.l"
|
||
-{ lineno++; }
|
||
- YY_BREAK
|
||
-case 73:
|
||
-YY_RULE_SETUP
|
||
-#line 305 "cftoken.l"
|
||
-{ DP("comment"); }
|
||
- YY_BREAK
|
||
-case 74:
|
||
-YY_RULE_SETUP
|
||
-#line 306 "cftoken.l"
|
||
-{
|
||
- DECHO;
|
||
- yylval.num = strtoll(yytext, NULL, 10);
|
||
- return (NUMBER);
|
||
-}
|
||
- YY_BREAK
|
||
-case 75:
|
||
-YY_RULE_SETUP
|
||
-#line 311 "cftoken.l"
|
||
-{ DECHO; return (SLASH); }
|
||
- YY_BREAK
|
||
-case 76:
|
||
-YY_RULE_SETUP
|
||
-#line 312 "cftoken.l"
|
||
-{ DECHO; return (COMMA); }
|
||
- YY_BREAK
|
||
-case 77:
|
||
-YY_RULE_SETUP
|
||
-#line 313 "cftoken.l"
|
||
-{ DP("end of sentence"); return (EOS); }
|
||
- YY_BREAK
|
||
-case 78:
|
||
-YY_RULE_SETUP
|
||
-#line 314 "cftoken.l"
|
||
-{ DP("begin of closure"); return (BCL); }
|
||
- YY_BREAK
|
||
-case 79:
|
||
-YY_RULE_SETUP
|
||
-#line 315 "cftoken.l"
|
||
-{ DP("end of closure"); return (ECL); }
|
||
- YY_BREAK
|
||
-/* generic string */
|
||
-case 80:
|
||
-YY_RULE_SETUP
|
||
-#line 318 "cftoken.l"
|
||
-{
|
||
- DECHO;
|
||
- yylval.str = strdup(yytext);
|
||
- return (STRING);
|
||
- }
|
||
- YY_BREAK
|
||
-case YY_STATE_EOF(INITIAL):
|
||
-case YY_STATE_EOF(S_CNF):
|
||
-case YY_STATE_EOF(S_IFACE):
|
||
-case YY_STATE_EOF(S_PREF):
|
||
-case YY_STATE_EOF(S_HOST):
|
||
-case YY_STATE_EOF(S_DUID):
|
||
-case YY_STATE_EOF(S_IA):
|
||
-case YY_STATE_EOF(S_AUTH):
|
||
-case YY_STATE_EOF(S_KEY):
|
||
-case YY_STATE_EOF(S_SECRET):
|
||
-case YY_STATE_EOF(S_ADDRPOOL):
|
||
-case YY_STATE_EOF(S_INCL):
|
||
-#line 324 "cftoken.l"
|
||
-{
|
||
- if (--incstackp < 0)
|
||
- yyterminate();
|
||
- else {
|
||
- yy_delete_buffer(YY_CURRENT_BUFFER);
|
||
- free(incstack[incstackp + 1].path);
|
||
- configfilename = incstack[incstackp].path;
|
||
- lineno = incstack[incstackp].lineno;
|
||
- yy_switch_to_buffer(incstack[incstackp].state);
|
||
- }
|
||
- }
|
||
- YY_BREAK
|
||
-case 81:
|
||
-YY_RULE_SETUP
|
||
-#line 336 "cftoken.l"
|
||
-ECHO;
|
||
- YY_BREAK
|
||
-#line 1587 "lex.yy.c"
|
||
-
|
||
- case YY_END_OF_BUFFER:
|
||
- {
|
||
- /* Amount of text matched not including the EOB char. */
|
||
- int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
|
||
-
|
||
- /* Undo the effects of YY_DO_BEFORE_ACTION. */
|
||
- *yy_cp = yy_hold_char;
|
||
- YY_RESTORE_YY_MORE_OFFSET
|
||
-
|
||
- if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
|
||
- {
|
||
- /* We're scanning a new file or input source. It's
|
||
- * possible that this happened because the user
|
||
- * just pointed yyin at a new source and called
|
||
- * yylex(). If so, then we have to assure
|
||
- * consistency between yy_current_buffer and our
|
||
- * globals. Here is the right place to do so, because
|
||
- * this is the first action (other than possibly a
|
||
- * back-up) that will match for the new input source.
|
||
- */
|
||
- yy_n_chars = yy_current_buffer->yy_n_chars;
|
||
- yy_current_buffer->yy_input_file = yyin;
|
||
- yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
|
||
- }
|
||
-
|
||
- /* Note that here we test for yy_c_buf_p "<=" to the position
|
||
- * of the first EOB in the buffer, since yy_c_buf_p will
|
||
- * already have been incremented past the NUL character
|
||
- * (since all states make transitions on EOB to the
|
||
- * end-of-buffer state). Contrast this with the test
|
||
- * in input().
|
||
- */
|
||
- if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
|
||
- { /* This was really a NUL. */
|
||
- yy_state_type yy_next_state;
|
||
-
|
||
- yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
|
||
-
|
||
- yy_current_state = yy_get_previous_state();
|
||
-
|
||
- /* Okay, we're now positioned to make the NUL
|
||
- * transition. We couldn't have
|
||
- * yy_get_previous_state() go ahead and do it
|
||
- * for us because it doesn't know how to deal
|
||
- * with the possibility of jamming (and we don't
|
||
- * want to build jamming into it because then it
|
||
- * will run more slowly).
|
||
- */
|
||
-
|
||
- yy_next_state = yy_try_NUL_trans( yy_current_state );
|
||
-
|
||
- yy_bp = yytext_ptr + YY_MORE_ADJ;
|
||
-
|
||
- if ( yy_next_state )
|
||
- {
|
||
- /* Consume the NUL. */
|
||
- yy_cp = ++yy_c_buf_p;
|
||
- yy_current_state = yy_next_state;
|
||
- goto yy_match;
|
||
- }
|
||
-
|
||
- else
|
||
- {
|
||
- yy_cp = yy_c_buf_p;
|
||
- goto yy_find_action;
|
||
- }
|
||
- }
|
||
-
|
||
- else switch ( yy_get_next_buffer() )
|
||
- {
|
||
- case EOB_ACT_END_OF_FILE:
|
||
- {
|
||
- yy_did_buffer_switch_on_eof = 0;
|
||
-
|
||
- if ( yywrap() )
|
||
- {
|
||
- /* Note: because we've taken care in
|
||
- * yy_get_next_buffer() to have set up
|
||
- * yytext, we can now set up
|
||
- * yy_c_buf_p so that if some total
|
||
- * hoser (like flex itself) wants to
|
||
- * call the scanner after we return the
|
||
- * YY_NULL, it'll still work - another
|
||
- * YY_NULL will get returned.
|
||
- */
|
||
- yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
|
||
-
|
||
- yy_act = YY_STATE_EOF(YY_START);
|
||
- goto do_action;
|
||
- }
|
||
-
|
||
- else
|
||
- {
|
||
- if ( ! yy_did_buffer_switch_on_eof )
|
||
- YY_NEW_FILE;
|
||
- }
|
||
- break;
|
||
- }
|
||
-
|
||
- case EOB_ACT_CONTINUE_SCAN:
|
||
- yy_c_buf_p =
|
||
- yytext_ptr + yy_amount_of_matched_text;
|
||
-
|
||
- yy_current_state = yy_get_previous_state();
|
||
-
|
||
- yy_cp = yy_c_buf_p;
|
||
- yy_bp = yytext_ptr + YY_MORE_ADJ;
|
||
- goto yy_match;
|
||
-
|
||
- case EOB_ACT_LAST_MATCH:
|
||
- yy_c_buf_p =
|
||
- &yy_current_buffer->yy_ch_buf[yy_n_chars];
|
||
-
|
||
- yy_current_state = yy_get_previous_state();
|
||
-
|
||
- yy_cp = yy_c_buf_p;
|
||
- yy_bp = yytext_ptr + YY_MORE_ADJ;
|
||
- goto yy_find_action;
|
||
- }
|
||
- break;
|
||
- }
|
||
-
|
||
- default:
|
||
- YY_FATAL_ERROR(
|
||
- "fatal flex scanner internal error--no action found" );
|
||
- } /* end of action switch */
|
||
- } /* end of scanning one token */
|
||
- } /* end of yylex */
|
||
-
|
||
-
|
||
-/* yy_get_next_buffer - try to read in a new buffer
|
||
- *
|
||
- * Returns a code representing an action:
|
||
- * EOB_ACT_LAST_MATCH -
|
||
- * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
|
||
- * EOB_ACT_END_OF_FILE - end of file
|
||
- */
|
||
-
|
||
-static int yy_get_next_buffer()
|
||
- {
|
||
- register char *dest = yy_current_buffer->yy_ch_buf;
|
||
- register char *source = yytext_ptr;
|
||
- register int number_to_move, i;
|
||
- int ret_val;
|
||
-
|
||
- if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
|
||
- YY_FATAL_ERROR(
|
||
- "fatal flex scanner internal error--end of buffer missed" );
|
||
-
|
||
- if ( yy_current_buffer->yy_fill_buffer == 0 )
|
||
- { /* Don't try to fill the buffer, so this is an EOF. */
|
||
- if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
|
||
- {
|
||
- /* We matched a single character, the EOB, so
|
||
- * treat this as a final EOF.
|
||
- */
|
||
- return EOB_ACT_END_OF_FILE;
|
||
- }
|
||
-
|
||
- else
|
||
- {
|
||
- /* We matched some text prior to the EOB, first
|
||
- * process it.
|
||
- */
|
||
- return EOB_ACT_LAST_MATCH;
|
||
- }
|
||
- }
|
||
-
|
||
- /* Try to read more data. */
|
||
-
|
||
- /* First move last chars to start of buffer. */
|
||
- number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
|
||
-
|
||
- for ( i = 0; i < number_to_move; ++i )
|
||
- *(dest++) = *(source++);
|
||
-
|
||
- if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
|
||
- /* don't do the read, it's not guaranteed to return an EOF,
|
||
- * just force an EOF
|
||
- */
|
||
- yy_current_buffer->yy_n_chars = yy_n_chars = 0;
|
||
-
|
||
- else
|
||
- {
|
||
- int num_to_read =
|
||
- yy_current_buffer->yy_buf_size - number_to_move - 1;
|
||
-
|
||
- while ( num_to_read <= 0 )
|
||
- { /* Not enough room in the buffer - grow it. */
|
||
-#ifdef YY_USES_REJECT
|
||
- YY_FATAL_ERROR(
|
||
-"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
|
||
-#else
|
||
-
|
||
- /* just a shorter name for the current buffer */
|
||
- YY_BUFFER_STATE b = yy_current_buffer;
|
||
-
|
||
- int yy_c_buf_p_offset =
|
||
- (int) (yy_c_buf_p - b->yy_ch_buf);
|
||
-
|
||
- if ( b->yy_is_our_buffer )
|
||
- {
|
||
- int new_size = b->yy_buf_size * 2;
|
||
-
|
||
- if ( new_size <= 0 )
|
||
- b->yy_buf_size += b->yy_buf_size / 8;
|
||
- else
|
||
- b->yy_buf_size *= 2;
|
||
-
|
||
- b->yy_ch_buf = (char *)
|
||
- /* Include room in for 2 EOB chars. */
|
||
- yy_flex_realloc( (void *) b->yy_ch_buf,
|
||
- b->yy_buf_size + 2 );
|
||
- }
|
||
- else
|
||
- /* Can't grow it, we don't own it. */
|
||
- b->yy_ch_buf = 0;
|
||
-
|
||
- if ( ! b->yy_ch_buf )
|
||
- YY_FATAL_ERROR(
|
||
- "fatal error - scanner input buffer overflow" );
|
||
-
|
||
- yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
|
||
-
|
||
- num_to_read = yy_current_buffer->yy_buf_size -
|
||
- number_to_move - 1;
|
||
-#endif
|
||
- }
|
||
-
|
||
- if ( num_to_read > YY_READ_BUF_SIZE )
|
||
- num_to_read = YY_READ_BUF_SIZE;
|
||
-
|
||
- /* Read in more data. */
|
||
- YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
|
||
- yy_n_chars, num_to_read );
|
||
-
|
||
- yy_current_buffer->yy_n_chars = yy_n_chars;
|
||
- }
|
||
-
|
||
- if ( yy_n_chars == 0 )
|
||
- {
|
||
- if ( number_to_move == YY_MORE_ADJ )
|
||
- {
|
||
- ret_val = EOB_ACT_END_OF_FILE;
|
||
- yyrestart( yyin );
|
||
- }
|
||
-
|
||
- else
|
||
- {
|
||
- ret_val = EOB_ACT_LAST_MATCH;
|
||
- yy_current_buffer->yy_buffer_status =
|
||
- YY_BUFFER_EOF_PENDING;
|
||
- }
|
||
- }
|
||
-
|
||
- else
|
||
- ret_val = EOB_ACT_CONTINUE_SCAN;
|
||
-
|
||
- yy_n_chars += number_to_move;
|
||
- yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
|
||
- yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
|
||
-
|
||
- yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
|
||
-
|
||
- return ret_val;
|
||
- }
|
||
-
|
||
-
|
||
-/* yy_get_previous_state - get the state just before the EOB char was reached */
|
||
-
|
||
-static yy_state_type yy_get_previous_state()
|
||
- {
|
||
- register yy_state_type yy_current_state;
|
||
- register char *yy_cp;
|
||
-
|
||
- yy_current_state = yy_start;
|
||
-
|
||
- for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
|
||
- {
|
||
- register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
|
||
- if ( yy_accept[yy_current_state] )
|
||
- {
|
||
- yy_last_accepting_state = yy_current_state;
|
||
- yy_last_accepting_cpos = yy_cp;
|
||
- }
|
||
- while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
|
||
- {
|
||
- yy_current_state = (int) yy_def[yy_current_state];
|
||
- if ( yy_current_state >= 517 )
|
||
- yy_c = yy_meta[(unsigned int) yy_c];
|
||
- }
|
||
- yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
|
||
- }
|
||
-
|
||
- return yy_current_state;
|
||
- }
|
||
-
|
||
-
|
||
-/* yy_try_NUL_trans - try to make a transition on the NUL character
|
||
- *
|
||
- * synopsis
|
||
- * next_state = yy_try_NUL_trans( current_state );
|
||
- */
|
||
-
|
||
-#ifdef YY_USE_PROTOS
|
||
-static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
|
||
-#else
|
||
-static yy_state_type yy_try_NUL_trans( yy_current_state )
|
||
-yy_state_type yy_current_state;
|
||
-#endif
|
||
- {
|
||
- register int yy_is_jam;
|
||
- register char *yy_cp = yy_c_buf_p;
|
||
-
|
||
- register YY_CHAR yy_c = 1;
|
||
- if ( yy_accept[yy_current_state] )
|
||
- {
|
||
- yy_last_accepting_state = yy_current_state;
|
||
- yy_last_accepting_cpos = yy_cp;
|
||
- }
|
||
- while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
|
||
- {
|
||
- yy_current_state = (int) yy_def[yy_current_state];
|
||
- if ( yy_current_state >= 517 )
|
||
- yy_c = yy_meta[(unsigned int) yy_c];
|
||
- }
|
||
- yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
|
||
- yy_is_jam = (yy_current_state == 516);
|
||
-
|
||
- return yy_is_jam ? 0 : yy_current_state;
|
||
- }
|
||
-
|
||
-
|
||
-#ifndef YY_NO_UNPUT
|
||
-#ifdef YY_USE_PROTOS
|
||
-static void yyunput( int c, register char *yy_bp )
|
||
-#else
|
||
-static void yyunput( c, yy_bp )
|
||
-int c;
|
||
-register char *yy_bp;
|
||
-#endif
|
||
- {
|
||
- register char *yy_cp = yy_c_buf_p;
|
||
-
|
||
- /* undo effects of setting up yytext */
|
||
- *yy_cp = yy_hold_char;
|
||
-
|
||
- if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
|
||
- { /* need to shift things up to make room */
|
||
- /* +2 for EOB chars. */
|
||
- register int number_to_move = yy_n_chars + 2;
|
||
- register char *dest = &yy_current_buffer->yy_ch_buf[
|
||
- yy_current_buffer->yy_buf_size + 2];
|
||
- register char *source =
|
||
- &yy_current_buffer->yy_ch_buf[number_to_move];
|
||
-
|
||
- while ( source > yy_current_buffer->yy_ch_buf )
|
||
- *--dest = *--source;
|
||
-
|
||
- yy_cp += (int) (dest - source);
|
||
- yy_bp += (int) (dest - source);
|
||
- yy_current_buffer->yy_n_chars =
|
||
- yy_n_chars = yy_current_buffer->yy_buf_size;
|
||
-
|
||
- if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
|
||
- YY_FATAL_ERROR( "flex scanner push-back overflow" );
|
||
- }
|
||
-
|
||
- *--yy_cp = (char) c;
|
||
-
|
||
-
|
||
- yytext_ptr = yy_bp;
|
||
- yy_hold_char = *yy_cp;
|
||
- yy_c_buf_p = yy_cp;
|
||
- }
|
||
-#endif /* ifndef YY_NO_UNPUT */
|
||
-
|
||
-
|
||
-#ifdef __cplusplus
|
||
-static int yyinput()
|
||
-#else
|
||
-static int input()
|
||
-#endif
|
||
- {
|
||
- int c;
|
||
-
|
||
- *yy_c_buf_p = yy_hold_char;
|
||
-
|
||
- if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
|
||
- {
|
||
- /* yy_c_buf_p now points to the character we want to return.
|
||
- * If this occurs *before* the EOB characters, then it's a
|
||
- * valid NUL; if not, then we've hit the end of the buffer.
|
||
- */
|
||
- if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
|
||
- /* This was really a NUL. */
|
||
- *yy_c_buf_p = '\0';
|
||
-
|
||
- else
|
||
- { /* need more input */
|
||
- int offset = yy_c_buf_p - yytext_ptr;
|
||
- ++yy_c_buf_p;
|
||
-
|
||
- switch ( yy_get_next_buffer() )
|
||
- {
|
||
- case EOB_ACT_LAST_MATCH:
|
||
- /* This happens because yy_g_n_b()
|
||
- * sees that we've accumulated a
|
||
- * token and flags that we need to
|
||
- * try matching the token before
|
||
- * proceeding. But for input(),
|
||
- * there's no matching to consider.
|
||
- * So convert the EOB_ACT_LAST_MATCH
|
||
- * to EOB_ACT_END_OF_FILE.
|
||
- */
|
||
-
|
||
- /* Reset buffer status. */
|
||
- yyrestart( yyin );
|
||
-
|
||
- /* fall through */
|
||
-
|
||
- case EOB_ACT_END_OF_FILE:
|
||
- {
|
||
- if ( yywrap() )
|
||
- return EOF;
|
||
-
|
||
- if ( ! yy_did_buffer_switch_on_eof )
|
||
- YY_NEW_FILE;
|
||
-#ifdef __cplusplus
|
||
- return yyinput();
|
||
-#else
|
||
- return input();
|
||
-#endif
|
||
- }
|
||
-
|
||
- case EOB_ACT_CONTINUE_SCAN:
|
||
- yy_c_buf_p = yytext_ptr + offset;
|
||
- break;
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */
|
||
- *yy_c_buf_p = '\0'; /* preserve yytext */
|
||
- yy_hold_char = *++yy_c_buf_p;
|
||
-
|
||
-
|
||
- return c;
|
||
- }
|
||
-
|
||
-
|
||
-#ifdef YY_USE_PROTOS
|
||
-void yyrestart( FILE *input_file )
|
||
-#else
|
||
-void yyrestart( input_file )
|
||
-FILE *input_file;
|
||
-#endif
|
||
- {
|
||
- if ( ! yy_current_buffer )
|
||
- yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
|
||
-
|
||
- yy_init_buffer( yy_current_buffer, input_file );
|
||
- yy_load_buffer_state();
|
||
- }
|
||
-
|
||
-
|
||
-#ifdef YY_USE_PROTOS
|
||
-void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
|
||
-#else
|
||
-void yy_switch_to_buffer( new_buffer )
|
||
-YY_BUFFER_STATE new_buffer;
|
||
-#endif
|
||
- {
|
||
- if ( yy_current_buffer == new_buffer )
|
||
- return;
|
||
-
|
||
- if ( yy_current_buffer )
|
||
- {
|
||
- /* Flush out information for old buffer. */
|
||
- *yy_c_buf_p = yy_hold_char;
|
||
- yy_current_buffer->yy_buf_pos = yy_c_buf_p;
|
||
- yy_current_buffer->yy_n_chars = yy_n_chars;
|
||
- }
|
||
-
|
||
- yy_current_buffer = new_buffer;
|
||
- yy_load_buffer_state();
|
||
-
|
||
- /* We don't actually know whether we did this switch during
|
||
- * EOF (yywrap()) processing, but the only time this flag
|
||
- * is looked at is after yywrap() is called, so it's safe
|
||
- * to go ahead and always set it.
|
||
- */
|
||
- yy_did_buffer_switch_on_eof = 1;
|
||
- }
|
||
-
|
||
-
|
||
-#ifdef YY_USE_PROTOS
|
||
-void yy_load_buffer_state( void )
|
||
-#else
|
||
-void yy_load_buffer_state()
|
||
-#endif
|
||
- {
|
||
- yy_n_chars = yy_current_buffer->yy_n_chars;
|
||
- yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
|
||
- yyin = yy_current_buffer->yy_input_file;
|
||
- yy_hold_char = *yy_c_buf_p;
|
||
- }
|
||
-
|
||
-
|
||
-#ifdef YY_USE_PROTOS
|
||
-YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
|
||
-#else
|
||
-YY_BUFFER_STATE yy_create_buffer( file, size )
|
||
-FILE *file;
|
||
-int size;
|
||
-#endif
|
||
- {
|
||
- YY_BUFFER_STATE b;
|
||
-
|
||
- b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
|
||
- if ( ! b )
|
||
- YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
|
||
-
|
||
- b->yy_buf_size = size;
|
||
-
|
||
- /* yy_ch_buf has to be 2 characters longer than the size given because
|
||
- * we need to put in 2 end-of-buffer characters.
|
||
- */
|
||
- b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
|
||
- if ( ! b->yy_ch_buf )
|
||
- YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
|
||
-
|
||
- b->yy_is_our_buffer = 1;
|
||
-
|
||
- yy_init_buffer( b, file );
|
||
-
|
||
- return b;
|
||
- }
|
||
-
|
||
-
|
||
-#ifdef YY_USE_PROTOS
|
||
-void yy_delete_buffer( YY_BUFFER_STATE b )
|
||
-#else
|
||
-void yy_delete_buffer( b )
|
||
-YY_BUFFER_STATE b;
|
||
-#endif
|
||
- {
|
||
- if ( ! b )
|
||
- return;
|
||
-
|
||
- if ( b == yy_current_buffer )
|
||
- yy_current_buffer = (YY_BUFFER_STATE) 0;
|
||
-
|
||
- if ( b->yy_is_our_buffer )
|
||
- yy_flex_free( (void *) b->yy_ch_buf );
|
||
-
|
||
- yy_flex_free( (void *) b );
|
||
- }
|
||
-
|
||
-
|
||
-#ifndef YY_ALWAYS_INTERACTIVE
|
||
-#ifndef YY_NEVER_INTERACTIVE
|
||
-extern int isatty YY_PROTO(( int ));
|
||
-#endif
|
||
-#endif
|
||
-
|
||
-#ifdef YY_USE_PROTOS
|
||
-void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
|
||
-#else
|
||
-void yy_init_buffer( b, file )
|
||
-YY_BUFFER_STATE b;
|
||
-FILE *file;
|
||
-#endif
|
||
-
|
||
-
|
||
- {
|
||
- yy_flush_buffer( b );
|
||
-
|
||
- b->yy_input_file = file;
|
||
- b->yy_fill_buffer = 1;
|
||
-
|
||
-#if YY_ALWAYS_INTERACTIVE
|
||
- b->yy_is_interactive = 1;
|
||
-#else
|
||
-#if YY_NEVER_INTERACTIVE
|
||
- b->yy_is_interactive = 0;
|
||
-#else
|
||
- b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
|
||
-#endif
|
||
-#endif
|
||
- }
|
||
-
|
||
-
|
||
-#ifdef YY_USE_PROTOS
|
||
-void yy_flush_buffer( YY_BUFFER_STATE b )
|
||
-#else
|
||
-void yy_flush_buffer( b )
|
||
-YY_BUFFER_STATE b;
|
||
-#endif
|
||
-
|
||
- {
|
||
- if ( ! b )
|
||
- return;
|
||
-
|
||
- b->yy_n_chars = 0;
|
||
-
|
||
- /* We always need two end-of-buffer characters. The first causes
|
||
- * a transition to the end-of-buffer state. The second causes
|
||
- * a jam in that state.
|
||
- */
|
||
- b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
|
||
- b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
|
||
-
|
||
- b->yy_buf_pos = &b->yy_ch_buf[0];
|
||
-
|
||
- b->yy_at_bol = 1;
|
||
- b->yy_buffer_status = YY_BUFFER_NEW;
|
||
-
|
||
- if ( b == yy_current_buffer )
|
||
- yy_load_buffer_state();
|
||
- }
|
||
-
|
||
-
|
||
-#ifndef YY_NO_SCAN_BUFFER
|
||
-#ifdef YY_USE_PROTOS
|
||
-YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
|
||
-#else
|
||
-YY_BUFFER_STATE yy_scan_buffer( base, size )
|
||
-char *base;
|
||
-yy_size_t size;
|
||
-#endif
|
||
- {
|
||
- YY_BUFFER_STATE b;
|
||
-
|
||
- if ( size < 2 ||
|
||
- base[size-2] != YY_END_OF_BUFFER_CHAR ||
|
||
- base[size-1] != YY_END_OF_BUFFER_CHAR )
|
||
- /* They forgot to leave room for the EOB's. */
|
||
- return 0;
|
||
-
|
||
- b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
|
||
- if ( ! b )
|
||
- YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
|
||
-
|
||
- b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
|
||
- b->yy_buf_pos = b->yy_ch_buf = base;
|
||
- b->yy_is_our_buffer = 0;
|
||
- b->yy_input_file = 0;
|
||
- b->yy_n_chars = b->yy_buf_size;
|
||
- b->yy_is_interactive = 0;
|
||
- b->yy_at_bol = 1;
|
||
- b->yy_fill_buffer = 0;
|
||
- b->yy_buffer_status = YY_BUFFER_NEW;
|
||
-
|
||
- yy_switch_to_buffer( b );
|
||
-
|
||
- return b;
|
||
- }
|
||
-#endif
|
||
-
|
||
-
|
||
-#ifndef YY_NO_SCAN_STRING
|
||
-#ifdef YY_USE_PROTOS
|
||
-YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
|
||
-#else
|
||
-YY_BUFFER_STATE yy_scan_string( yy_str )
|
||
-yyconst char *yy_str;
|
||
-#endif
|
||
- {
|
||
- int len;
|
||
- for ( len = 0; yy_str[len]; ++len )
|
||
- ;
|
||
-
|
||
- return yy_scan_bytes( yy_str, len );
|
||
- }
|
||
-#endif
|
||
-
|
||
-
|
||
-#ifndef YY_NO_SCAN_BYTES
|
||
-#ifdef YY_USE_PROTOS
|
||
-YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
|
||
-#else
|
||
-YY_BUFFER_STATE yy_scan_bytes( bytes, len )
|
||
-yyconst char *bytes;
|
||
-int len;
|
||
-#endif
|
||
- {
|
||
- YY_BUFFER_STATE b;
|
||
- char *buf;
|
||
- yy_size_t n;
|
||
- int i;
|
||
-
|
||
- /* Get memory for full buffer, including space for trailing EOB's. */
|
||
- n = len + 2;
|
||
- buf = (char *) yy_flex_alloc( n );
|
||
- if ( ! buf )
|
||
- YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
|
||
-
|
||
- for ( i = 0; i < len; ++i )
|
||
- buf[i] = bytes[i];
|
||
-
|
||
- buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
|
||
-
|
||
- b = yy_scan_buffer( buf, n );
|
||
- if ( ! b )
|
||
- YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
|
||
-
|
||
- /* It's okay to grow etc. this buffer, and we should throw it
|
||
- * away when we're done.
|
||
- */
|
||
- b->yy_is_our_buffer = 1;
|
||
-
|
||
- return b;
|
||
- }
|
||
-#endif
|
||
-
|
||
-
|
||
-#ifndef YY_NO_PUSH_STATE
|
||
-#ifdef YY_USE_PROTOS
|
||
-static void yy_push_state( int new_state )
|
||
-#else
|
||
-static void yy_push_state( new_state )
|
||
-int new_state;
|
||
-#endif
|
||
- {
|
||
- if ( yy_start_stack_ptr >= yy_start_stack_depth )
|
||
- {
|
||
- yy_size_t new_size;
|
||
-
|
||
- yy_start_stack_depth += YY_START_STACK_INCR;
|
||
- new_size = yy_start_stack_depth * sizeof( int );
|
||
-
|
||
- if ( ! yy_start_stack )
|
||
- yy_start_stack = (int *) yy_flex_alloc( new_size );
|
||
-
|
||
- else
|
||
- yy_start_stack = (int *) yy_flex_realloc(
|
||
- (void *) yy_start_stack, new_size );
|
||
-
|
||
- if ( ! yy_start_stack )
|
||
- YY_FATAL_ERROR(
|
||
- "out of memory expanding start-condition stack" );
|
||
- }
|
||
-
|
||
- yy_start_stack[yy_start_stack_ptr++] = YY_START;
|
||
-
|
||
- BEGIN(new_state);
|
||
- }
|
||
-#endif
|
||
-
|
||
-
|
||
-#ifndef YY_NO_POP_STATE
|
||
-static void yy_pop_state()
|
||
- {
|
||
- if ( --yy_start_stack_ptr < 0 )
|
||
- YY_FATAL_ERROR( "start-condition stack underflow" );
|
||
-
|
||
- BEGIN(yy_start_stack[yy_start_stack_ptr]);
|
||
- }
|
||
-#endif
|
||
-
|
||
-
|
||
-#ifndef YY_NO_TOP_STATE
|
||
-static int yy_top_state()
|
||
- {
|
||
- return yy_start_stack[yy_start_stack_ptr - 1];
|
||
- }
|
||
-#endif
|
||
-
|
||
-#ifndef YY_EXIT_FAILURE
|
||
-#define YY_EXIT_FAILURE 2
|
||
-#endif
|
||
-
|
||
-#ifdef YY_USE_PROTOS
|
||
-static void yy_fatal_error( yyconst char msg[] )
|
||
-#else
|
||
-static void yy_fatal_error( msg )
|
||
-char msg[];
|
||
-#endif
|
||
- {
|
||
- (void) fprintf( stderr, "%s\n", msg );
|
||
- exit( YY_EXIT_FAILURE );
|
||
- }
|
||
-
|
||
-
|
||
-
|
||
-/* Redefine yyless() so it works in section 3 code. */
|
||
-
|
||
-#undef yyless
|
||
-#define yyless(n) \
|
||
- do \
|
||
- { \
|
||
- /* Undo effects of setting up yytext. */ \
|
||
- yytext[yyleng] = yy_hold_char; \
|
||
- yy_c_buf_p = yytext + n; \
|
||
- yy_hold_char = *yy_c_buf_p; \
|
||
- *yy_c_buf_p = '\0'; \
|
||
- yyleng = n; \
|
||
- } \
|
||
- while ( 0 )
|
||
-
|
||
-
|
||
-/* Internal utility routines. */
|
||
-
|
||
-#ifndef yytext_ptr
|
||
-#ifdef YY_USE_PROTOS
|
||
-static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
|
||
-#else
|
||
-static void yy_flex_strncpy( s1, s2, n )
|
||
-char *s1;
|
||
-yyconst char *s2;
|
||
-int n;
|
||
-#endif
|
||
- {
|
||
- register int i;
|
||
- for ( i = 0; i < n; ++i )
|
||
- s1[i] = s2[i];
|
||
- }
|
||
-#endif
|
||
-
|
||
-#ifdef YY_NEED_STRLEN
|
||
-#ifdef YY_USE_PROTOS
|
||
-static int yy_flex_strlen( yyconst char *s )
|
||
-#else
|
||
-static int yy_flex_strlen( s )
|
||
-yyconst char *s;
|
||
-#endif
|
||
- {
|
||
- register int n;
|
||
- for ( n = 0; s[n]; ++n )
|
||
- ;
|
||
-
|
||
- return n;
|
||
- }
|
||
-#endif
|
||
-
|
||
-
|
||
-#ifdef YY_USE_PROTOS
|
||
-static void *yy_flex_alloc( yy_size_t size )
|
||
-#else
|
||
-static void *yy_flex_alloc( size )
|
||
-yy_size_t size;
|
||
-#endif
|
||
- {
|
||
- return (void *) malloc( size );
|
||
- }
|
||
-
|
||
-#ifdef YY_USE_PROTOS
|
||
-static void *yy_flex_realloc( void *ptr, yy_size_t size )
|
||
-#else
|
||
-static void *yy_flex_realloc( ptr, size )
|
||
-void *ptr;
|
||
-yy_size_t size;
|
||
-#endif
|
||
- {
|
||
- /* The cast to (char *) in the following accommodates both
|
||
- * implementations that use char* generic pointers, and those
|
||
- * that use void* generic pointers. It works with the latter
|
||
- * because both ANSI C and C++ allow castless assignment from
|
||
- * any pointer type to void*, and deal with argument conversions
|
||
- * as though doing an assignment.
|
||
- */
|
||
- return (void *) realloc( (char *) ptr, size );
|
||
- }
|
||
-
|
||
-#ifdef YY_USE_PROTOS
|
||
-static void yy_flex_free( void *ptr )
|
||
-#else
|
||
-static void yy_flex_free( ptr )
|
||
-void *ptr;
|
||
-#endif
|
||
- {
|
||
- free( ptr );
|
||
- }
|
||
-
|
||
-#if YY_MAIN
|
||
-int main()
|
||
- {
|
||
- yylex();
|
||
- return 0;
|
||
- }
|
||
-#endif
|
||
-#line 336 "cftoken.l"
|
||
-
|
||
-static void
|
||
-cfdebug_print(w, t, l)
|
||
- char *w, *t;
|
||
- int l;
|
||
-{
|
||
- if (w) {
|
||
- dprintf(LOG_DEBUG, FNAME,
|
||
- "<%d>%s [%s] (%d)", yy_start, w, t, l);
|
||
- } else {
|
||
- dprintf(LOG_DEBUG, FNAME,
|
||
- "<%d>[%s] (%d)", yy_start, t, l);
|
||
- }
|
||
-}
|
||
-
|
||
-static void
|
||
-yyerror0(int level, char *s, va_list ap)
|
||
-{
|
||
- char ebuf[BUFSIZ], *bp, *ep;
|
||
-
|
||
- bp = ebuf;
|
||
- ep = ebuf + sizeof(ebuf);
|
||
- bp += snprintf(bp, ep - bp, "%s %d: ", configfilename, lineno);
|
||
- if (bp < ep)
|
||
- bp += vsnprintf(bp, ep - bp, s, ap);
|
||
-
|
||
- dprintf(level, FNAME, ebuf);
|
||
-}
|
||
-
|
||
-void
|
||
-yyerror(char *s, ...)
|
||
-{
|
||
- va_list ap;
|
||
-#ifdef HAVE_STDARG_H
|
||
- va_start(ap, s);
|
||
-#else
|
||
- va_start(ap);
|
||
-#endif
|
||
- yyerror0(LOG_ERR, s, ap);
|
||
- va_end(ap);
|
||
- yyerrorcount++;
|
||
-}
|
||
-
|
||
-void
|
||
-yywarn(char *s, ...)
|
||
-{
|
||
- va_list ap;
|
||
-#ifdef HAVE_STDARG_H
|
||
- va_start(ap, s);
|
||
-#else
|
||
- va_start(ap);
|
||
-#endif
|
||
- yyerror0(LOG_WARNING, s, ap);
|
||
- va_end(ap);
|
||
-}
|
||
-
|
||
-int
|
||
-cfswitch_buffer(incl)
|
||
- char *incl;
|
||
-{
|
||
- char *path = qstrdup(incl);
|
||
- FILE *fp;
|
||
-
|
||
- if (incstackp >= MAX_INCLUDE_DEPTH) {
|
||
- dprintf(LOG_ERR, FNAME, "cfparse: includes nested too deeply");
|
||
- return (-1);
|
||
- }
|
||
- incstack[incstackp].path = configfilename;
|
||
- incstack[incstackp].state = YY_CURRENT_BUFFER;
|
||
- incstack[incstackp].lineno = lineno;
|
||
-
|
||
- fp = fopen(path, "r");
|
||
- if (fp == NULL) {
|
||
- dprintf(LOG_ERR, FNAME, "cfparse: fopen(%s): %s",
|
||
- path, strerror(errno));
|
||
- if (errno == ENOENT)
|
||
- return (0);
|
||
- return (-1);
|
||
- }
|
||
- incstackp++;
|
||
- configfilename = path;
|
||
- lineno = 1;
|
||
- yy_switch_to_buffer(yy_create_buffer(fp, YY_BUF_SIZE));
|
||
-
|
||
- BEGIN(S_CNF);
|
||
-
|
||
- return (0);
|
||
-}
|
||
-
|
||
-int
|
||
-cfparse(conf)
|
||
- char *conf;
|
||
-{
|
||
- configfilename = conf;
|
||
- if ((yyin = fopen(configfilename, "r")) == NULL) {
|
||
- dprintf(LOG_ERR, FNAME, "cfparse: fopen(%s): %s",
|
||
- configfilename, strerror(errno));
|
||
- if (errno == ENOENT)
|
||
- return (0);
|
||
- return (-1);
|
||
- }
|
||
-
|
||
- if (yyparse() || yyerrorcount) {
|
||
- if (yyerrorcount) {
|
||
- yyerror("fatal parse failure: exiting (%d errors)",
|
||
- yyerrorcount);
|
||
- } else
|
||
- yyerror("fatal parse failure: exiting");
|
||
- return (-1);
|
||
- }
|
||
-
|
||
- return (cf_post_config());
|
||
-}
|
||
diff -Naur wide-dhcpv6-20080615.orig/cftoken.l wide-dhcpv6-20080615/cftoken.l
|
||
--- wide-dhcpv6-20080615.orig/cftoken.l 2007-03-21 17:52:55.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/cftoken.l 2013-12-30 16:11:43.000000000 +0800
|
||
@@ -104,7 +104,7 @@
|
||
hexpair {hexdigit}{hexdigit}
|
||
hexstring 0[xX]{hexpair}+
|
||
duid {hexpair}(:{hexpair})*
|
||
-ifname {string}
|
||
+ifname [a-zA-Z]+[0-9]+|[a-zA-Z\_]+[0-9\_]+[0-9]+|[a-zA-Z\.]+[0-9\.]+[0-9]+
|
||
slash \/
|
||
bcl \{
|
||
ecl \}
|
||
@@ -120,6 +120,7 @@
|
||
%s S_SECRET
|
||
%s S_ADDRPOOL
|
||
%s S_INCL
|
||
+%option noyywrap
|
||
|
||
%%
|
||
%{
|
||
diff -Naur wide-dhcpv6-20080615.orig/common.c wide-dhcpv6-20080615/common.c
|
||
--- wide-dhcpv6-20080615.orig/common.c 2011-08-05 11:30:35.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/common.c 2013-12-30 16:11:43.000000000 +0800
|
||
@@ -86,6 +86,16 @@
|
||
#include <common.h>
|
||
#include <timer.h>
|
||
|
||
+/*zyxel*/
|
||
+#include <stdbool.h>
|
||
+#include <json/json.h>
|
||
+
|
||
+#include "zcfg_common.h"
|
||
+#include "zcfg_fe_rdm_access.h"
|
||
+#include "zcfg_msg.h"
|
||
+
|
||
+struct json_object *dhcp6cMsg = NULL;
|
||
+
|
||
#ifdef __linux__
|
||
/* from /usr/include/linux/ipv6.h */
|
||
|
||
@@ -114,6 +124,38 @@
|
||
static char *sprint_uint64 __P((char *, int, u_int64_t));
|
||
static char *sprint_auth __P((struct dhcp6_optinfo *));
|
||
|
||
+zcfgRet_t dhcp6MsgSend(int msg_type, int payloadLen, const char *payload)
|
||
+{
|
||
+ zcfgRet_t ret;
|
||
+ void *sendBuf = NULL;
|
||
+ void *recvBuf = NULL;
|
||
+ zcfgMsg_t *sendMsgHdr = NULL;
|
||
+ char *recv_str = NULL;
|
||
+ int buf_size = 0;
|
||
+
|
||
+ buf_size = sizeof(zcfgMsg_t)+payloadLen;
|
||
+ sendBuf = malloc(buf_size);
|
||
+ sendMsgHdr = (zcfgMsg_t*)sendBuf;
|
||
+
|
||
+ sendMsgHdr->type = msg_type;
|
||
+ sendMsgHdr->length = payloadLen;
|
||
+ sendMsgHdr->srcEid = ZCFG_EID_UDHCP6C;
|
||
+ sendMsgHdr->dstEid = ZCFG_EID_ESMD;
|
||
+
|
||
+ if(payload != NULL)
|
||
+ memcpy(sendBuf+sizeof(zcfgMsg_t), payload, payloadLen);
|
||
+
|
||
+ ret = zcfgMsgSendAndGetReply(sendMsgHdr, (zcfgMsg_t **)&recvBuf, 0);
|
||
+
|
||
+ if(ret == ZCFG_SUCCESS) {
|
||
+ recv_str = (char *)recvBuf+sizeof(zcfgMsg_t);
|
||
+ printf("Receive message : %s\n", recv_str);
|
||
+ free(recvBuf);
|
||
+ }
|
||
+
|
||
+ return ret;
|
||
+}
|
||
+
|
||
int
|
||
dhcp6_copy_list(dst, src)
|
||
struct dhcp6_list *dst, *src;
|
||
@@ -999,18 +1041,17 @@
|
||
char tmpbuf[256]; /* DUID should be no more than 256 bytes */
|
||
int pos = 0;
|
||
|
||
+ dprintf(LOG_NOTICE, FNAME, "DUID file: %s", idfile);
|
||
+
|
||
if ((fp = fopen(idfile, "r")) == NULL && errno != ENOENT)
|
||
dprintf(LOG_NOTICE, FNAME, "failed to open DUID file: %s",
|
||
idfile);
|
||
|
||
if (fp) {
|
||
- //printf("get duid file\n");
|
||
pos = ftell(fp);
|
||
fseek(fp, 0L, SEEK_END);
|
||
len = ftell(fp);
|
||
- fseek (fp, pos, SEEK_SET);
|
||
-
|
||
- //printf("duid length is %d\n", len);
|
||
+ fseek(fp, pos, SEEK_SET);
|
||
#if 0
|
||
/* decode length */
|
||
if (fread(&len, sizeof(len), 1, fp) != 1) {
|
||
@@ -3259,104 +3300,56 @@
|
||
int pltime;
|
||
int vltime;
|
||
{
|
||
-#ifdef __KAME__
|
||
- struct in6_aliasreq req;
|
||
-#endif
|
||
-#ifdef __linux__
|
||
- struct in6_ifreq req;
|
||
- struct ifreq ifr;
|
||
-#endif
|
||
-#ifdef __sun__
|
||
- struct lifreq req;
|
||
-#endif
|
||
unsigned long ioctl_cmd;
|
||
char *cmdstr;
|
||
int s; /* XXX overhead */
|
||
+ char extAddr[48] = {0};
|
||
|
||
switch(cmd) {
|
||
case IFADDRCONF_ADD:
|
||
cmdstr = "add";
|
||
-#ifdef __KAME__
|
||
- ioctl_cmd = SIOCAIFADDR_IN6;
|
||
-#endif
|
||
-#ifdef __linux__
|
||
- ioctl_cmd = SIOCSIFADDR;
|
||
-#endif
|
||
-#ifdef __sun__
|
||
- ioctl_cmd = SIOCLIFADDIF;
|
||
-#endif
|
||
break;
|
||
case IFADDRCONF_REMOVE:
|
||
cmdstr = "remove";
|
||
-#ifdef __KAME__
|
||
- ioctl_cmd = SIOCDIFADDR_IN6;
|
||
-#endif
|
||
-#ifdef __linux__
|
||
- ioctl_cmd = SIOCDIFADDR;
|
||
-#endif
|
||
-#ifdef __sun__
|
||
- ioctl_cmd = SIOCLIFREMOVEIF;
|
||
-#endif
|
||
break;
|
||
default:
|
||
return (-1);
|
||
}
|
||
|
||
- if ((s = socket(PF_INET6, SOCK_DGRAM, IPPROTO_UDP)) < 0) {
|
||
- dprintf(LOG_ERR, FNAME, "can't open a temporary socket: %s",
|
||
- strerror(errno));
|
||
- return (-1);
|
||
- }
|
||
+ snprintf(extAddr, sizeof(extAddr), "%s/%d", addr2str((struct sockaddr *)addr), plen);
|
||
+ addAddrToMsg(cmd, ifname, extAddr, pltime, vltime);
|
||
|
||
- memset(&req, 0, sizeof(req));
|
||
-#ifdef __KAME__
|
||
- req.ifra_addr = *addr;
|
||
- memcpy(req.ifra_name, ifname, sizeof(req.ifra_name));
|
||
- (void)sa6_plen2mask(&req.ifra_prefixmask, plen);
|
||
- /* XXX: should lifetimes be calculated based on the lease duration? */
|
||
- req.ifra_lifetime.ia6t_vltime = vltime;
|
||
- req.ifra_lifetime.ia6t_pltime = pltime;
|
||
-#endif
|
||
-#ifdef __linux__
|
||
- memset(&ifr, 0, sizeof(ifr));
|
||
- strncpy(ifr.ifr_name, ifname, IFNAMSIZ - 1);
|
||
- if (ioctl(s, SIOGIFINDEX, &ifr) < 0) {
|
||
- dprintf(LOG_NOTICE, FNAME, "failed to get the index of %s: %s",
|
||
- ifname, strerror(errno));
|
||
- close(s);
|
||
- return (-1);
|
||
- }
|
||
- memcpy(&req.ifr6_addr, &addr->sin6_addr, sizeof(struct in6_addr));
|
||
- req.ifr6_prefixlen = plen;
|
||
- req.ifr6_ifindex = ifr.ifr_ifindex;
|
||
-#endif
|
||
-#ifdef __sun__
|
||
- strncpy(req.lifr_name, ifname, sizeof (req.lifr_name));
|
||
-#endif
|
||
-
|
||
- if (ioctl(s, ioctl_cmd, &req)) {
|
||
- dprintf(LOG_NOTICE, FNAME, "failed to %s an address on %s: %s",
|
||
- cmdstr, ifname, strerror(errno));
|
||
- close(s);
|
||
- return (-1);
|
||
- }
|
||
+ close(s);
|
||
+ return (0);
|
||
+}
|
||
|
||
-#ifdef __sun__
|
||
- memcpy(&req.lifr_addr, addr, sizeof (*addr));
|
||
- if (ioctl(s, SIOCSLIFADDR, &req) == -1) {
|
||
- dprintf(LOG_NOTICE, FNAME, "failed to %s new address on %s: %s",
|
||
- cmdstr, ifname, strerror(errno));
|
||
- close(s);
|
||
- return (-1);
|
||
+void addAddrToMsg(ifaddrconf_cmd_t cmd, const char *ifname, const char *addr, int pltime, int vltime)
|
||
+{
|
||
+ if(strncmp(ifname, "br", 2) == 0) { /* address of the PD interface */
|
||
+#if 0
|
||
+ snprintf(dhcp6cMsgBody.pdIfAddress, sizeof(dhcp6cMsgBody.pdIfAddress), "%s", addr);
|
||
+#endif
|
||
+ dprintf(LOG_ERR, FNAME, "%s : address of the PD interface\n", __FUNCTION__);
|
||
}
|
||
+ else { /* address of the WAN interface */
|
||
+ json_object_object_add(dhcp6cMsg, "addrAssigned", json_object_new_boolean(true));
|
||
+ json_object_object_add(dhcp6cMsg, "addrCmd", json_object_new_int(cmd));
|
||
+ json_object_object_add(dhcp6cMsg, "ifname", json_object_new_string(ifname));
|
||
+ json_object_object_add(dhcp6cMsg, "addr", json_object_new_string(addr));
|
||
+ json_object_object_add(dhcp6cMsg, "addrPltime", json_object_new_int(pltime));
|
||
+ json_object_object_add(dhcp6cMsg, "addrVltime", json_object_new_int(vltime));
|
||
+#if 0
|
||
+ dhcp6cMsgBody.addrAssigned = TRUE;
|
||
+ dhcp6cMsgBody.addrCmd = cmd;
|
||
+ snprintf(dhcp6cMsgBody.ifname, sizeof(dhcp6cMsgBody.ifname), "%s", ifname);
|
||
+ snprintf(dhcp6cMsgBody.address, sizeof(dhcp6cMsgBody.address), "%s", addr);
|
||
#endif
|
||
+ }
|
||
|
||
- dprintf(LOG_DEBUG, FNAME, "%s an address %s/%d on %s", cmdstr,
|
||
- addr2str((struct sockaddr *)addr), plen, ifname);
|
||
+ dprintf(LOG_NOTICE, FNAME, "DHCP6C_ADDR_CHANGED");
|
||
|
||
- close(s);
|
||
- return (0);
|
||
-}
|
||
+ return;
|
||
+} /* End of sendAddrEventMessage() */
|
||
|
||
int
|
||
safefile(path)
|
||
diff -Naur wide-dhcpv6-20080615.orig/common.h wide-dhcpv6-20080615/common.h
|
||
--- wide-dhcpv6-20080615.orig/common.h 2007-03-21 17:52:57.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/common.h 2014-01-28 19:26:44.325087367 +0800
|
||
@@ -155,7 +155,6 @@
|
||
extern int in6_addrscopebyif __P((struct in6_addr *, char *));
|
||
extern int in6_scope __P((struct in6_addr *));
|
||
extern void setloglevel __P((int));
|
||
-extern void dprintf __P((int, const char *, const char *, ...));
|
||
extern int get_duid __P((char *, struct duid *));
|
||
extern void dhcp6_init_options __P((struct dhcp6_optinfo *));
|
||
extern void dhcp6_clear_options __P((struct dhcp6_optinfo *));
|
||
diff -Naur wide-dhcpv6-20080615.orig/config.log wide-dhcpv6-20080615/config.log
|
||
--- wide-dhcpv6-20080615.orig/config.log 1970-01-01 08:00:00.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/config.log 2013-12-30 16:11:43.000000000 +0800
|
||
@@ -0,0 +1,1409 @@
|
||
+This file contains any messages produced by compilers while
|
||
+running configure, to aid debugging if configure makes a mistake.
|
||
+
|
||
+It was created by configure, which was
|
||
+generated by GNU Autoconf 2.59. Invocation command line was
|
||
+
|
||
+ $ ./configure
|
||
+
|
||
+## --------- ##
|
||
+## Platform. ##
|
||
+## --------- ##
|
||
+
|
||
+hostname = jerry-desktop
|
||
+uname -m = i686
|
||
+uname -r = 2.6.31-14-generic
|
||
+uname -s = Linux
|
||
+uname -v = #48-Ubuntu SMP Fri Oct 16 14:04:26 UTC 2009
|
||
+
|
||
+/usr/bin/uname -p = unknown
|
||
+/bin/uname -X = unknown
|
||
+
|
||
+/bin/arch = unknown
|
||
+/usr/bin/arch -k = unknown
|
||
+/usr/convex/getsysinfo = unknown
|
||
+hostinfo = unknown
|
||
+/bin/machine = unknown
|
||
+/usr/bin/oslevel = unknown
|
||
+/bin/universe = unknown
|
||
+
|
||
+PATH: /usr/local/sbin
|
||
+PATH: /usr/local/bin
|
||
+PATH: /usr/sbin
|
||
+PATH: /usr/bin
|
||
+PATH: /sbin
|
||
+PATH: /bin
|
||
+PATH: /usr/games
|
||
+
|
||
+
|
||
+## ----------- ##
|
||
+## Core tests. ##
|
||
+## ----------- ##
|
||
+
|
||
+configure:1338: checking for a BSD-compatible install
|
||
+configure:1393: result: /usr/bin/install -c
|
||
+configure:1404: checking whether make sets $(MAKE)
|
||
+configure:1424: result: yes
|
||
+configure:1479: checking for gcc
|
||
+configure:1495: found /usr/bin/gcc
|
||
+configure:1505: result: gcc
|
||
+configure:1749: checking for C compiler version
|
||
+configure:1752: gcc --version </dev/null >&5
|
||
+gcc (Ubuntu 4.4.1-4ubuntu9) 4.4.1
|
||
+Copyright (C) 2009 Free Software Foundation, Inc.
|
||
+This is free software; see the source for copying conditions. There is NO
|
||
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||
+
|
||
+configure:1755: $? = 0
|
||
+configure:1757: gcc -v </dev/null >&5
|
||
+Using built-in specs.
|
||
+Target: i486-linux-gnu
|
||
+Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.4.1-4ubuntu9' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --program-suffix=-4.4 --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i486 --with-tune=generic --enable-checking=release --build=i486-linux-gnu --host=i486-linux-gnu --target=i486-linux-gnu
|
||
+Thread model: posix
|
||
+gcc version 4.4.1 (Ubuntu 4.4.1-4ubuntu9)
|
||
+configure:1760: $? = 0
|
||
+configure:1762: gcc -V </dev/null >&5
|
||
+gcc: '-V' option must have argument
|
||
+configure:1765: $? = 1
|
||
+configure:1788: checking for C compiler default output file name
|
||
+configure:1791: gcc conftest.c >&5
|
||
+configure:1794: $? = 0
|
||
+configure:1840: result: a.out
|
||
+configure:1845: checking whether the C compiler works
|
||
+configure:1851: ./a.out
|
||
+configure:1854: $? = 0
|
||
+configure:1871: result: yes
|
||
+configure:1878: checking whether we are cross compiling
|
||
+configure:1880: result: no
|
||
+configure:1883: checking for suffix of executables
|
||
+configure:1885: gcc -o conftest conftest.c >&5
|
||
+configure:1888: $? = 0
|
||
+configure:1913: result:
|
||
+configure:1919: checking for suffix of object files
|
||
+configure:1940: gcc -c conftest.c >&5
|
||
+configure:1943: $? = 0
|
||
+configure:1965: result: o
|
||
+configure:1969: checking whether we are using the GNU C compiler
|
||
+configure:1993: gcc -c conftest.c >&5
|
||
+configure:1999: $? = 0
|
||
+configure:2003: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:2006: $? = 0
|
||
+configure:2009: test -s conftest.o
|
||
+configure:2012: $? = 0
|
||
+configure:2025: result: yes
|
||
+configure:2031: checking whether gcc accepts -g
|
||
+configure:2052: gcc -c -g conftest.c >&5
|
||
+configure:2058: $? = 0
|
||
+configure:2062: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:2065: $? = 0
|
||
+configure:2068: test -s conftest.o
|
||
+configure:2071: $? = 0
|
||
+configure:2082: result: yes
|
||
+configure:2099: checking for gcc option to accept ANSI C
|
||
+configure:2169: gcc -c -g -O2 conftest.c >&5
|
||
+configure:2175: $? = 0
|
||
+configure:2179: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:2182: $? = 0
|
||
+configure:2185: test -s conftest.o
|
||
+configure:2188: $? = 0
|
||
+configure:2206: result: none needed
|
||
+configure:2224: gcc -c -g -O2 conftest.c >&5
|
||
+conftest.c:2: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'me'
|
||
+configure:2230: $? = 1
|
||
+configure: failed program was:
|
||
+| #ifndef __cplusplus
|
||
+| choke me
|
||
+| #endif
|
||
+configure:2368: checking how to run the C preprocessor
|
||
+configure:2403: gcc -E conftest.c
|
||
+configure:2409: $? = 0
|
||
+configure:2441: gcc -E conftest.c
|
||
+conftest.c:9:28: error: ac_nonexistent.h: No such file or directory
|
||
+configure:2447: $? = 1
|
||
+configure: failed program was:
|
||
+| /* confdefs.h. */
|
||
+|
|
||
+| #define PACKAGE_NAME ""
|
||
+| #define PACKAGE_TARNAME ""
|
||
+| #define PACKAGE_VERSION ""
|
||
+| #define PACKAGE_STRING ""
|
||
+| #define PACKAGE_BUGREPORT ""
|
||
+| /* end confdefs.h. */
|
||
+| #include <ac_nonexistent.h>
|
||
+configure:2486: result: gcc -E
|
||
+configure:2510: gcc -E conftest.c
|
||
+configure:2516: $? = 0
|
||
+configure:2548: gcc -E conftest.c
|
||
+conftest.c:9:28: error: ac_nonexistent.h: No such file or directory
|
||
+configure:2554: $? = 1
|
||
+configure: failed program was:
|
||
+| /* confdefs.h. */
|
||
+|
|
||
+| #define PACKAGE_NAME ""
|
||
+| #define PACKAGE_TARNAME ""
|
||
+| #define PACKAGE_VERSION ""
|
||
+| #define PACKAGE_STRING ""
|
||
+| #define PACKAGE_BUGREPORT ""
|
||
+| /* end confdefs.h. */
|
||
+| #include <ac_nonexistent.h>
|
||
+configure:2601: checking for bison
|
||
+configure:2617: found /usr/bin/bison
|
||
+configure:2627: result: bison -y
|
||
+configure:2643: checking for flex
|
||
+configure:2659: found /usr/bin/flex
|
||
+configure:2669: result: flex
|
||
+configure:2682: checking for yywrap in -lfl
|
||
+configure:2712: gcc -o conftest -g -O2 conftest.c -lfl >&5
|
||
+configure:2718: $? = 0
|
||
+configure:2722: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:2725: $? = 0
|
||
+configure:2728: test -s conftest
|
||
+configure:2731: $? = 0
|
||
+configure:2744: result: yes
|
||
+configure:2822: checking lex output file root
|
||
+configure:2833: flex conftest.l
|
||
+configure:2836: $? = 0
|
||
+configure:2848: result: lex.yy
|
||
+configure:2853: checking whether yytext is a pointer
|
||
+configure:2869: gcc -o conftest -g -O2 conftest.c -lfl >&5
|
||
+configure:2875: $? = 0
|
||
+configure:2879: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:2882: $? = 0
|
||
+configure:2885: test -s conftest
|
||
+configure:2888: $? = 0
|
||
+configure:2902: result: yes
|
||
+configure:2923: checking for sys/queue.h
|
||
+configure:2941: gcc -c -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:2947: $? = 0
|
||
+configure:2951: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:2954: $? = 0
|
||
+configure:2957: test -s conftest.o
|
||
+configure:2960: $? = 0
|
||
+configure:2962: result: yes
|
||
+configure:2975: checking for egrep
|
||
+configure:2985: result: grep -E
|
||
+configure:3009: checking for getaddrinfo/getnameinfo library
|
||
+configure:3011: result: regular
|
||
+configure:3104: checking for getaddrinfo
|
||
+configure:3161: gcc -o conftest -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:3167: $? = 0
|
||
+configure:3171: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:3174: $? = 0
|
||
+configure:3177: test -s conftest
|
||
+configure:3180: $? = 0
|
||
+configure:3192: result: yes
|
||
+configure:3216: checking for getnameinfo
|
||
+configure:3273: gcc -o conftest -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:3279: $? = 0
|
||
+configure:3283: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:3286: $? = 0
|
||
+configure:3289: test -s conftest
|
||
+configure:3292: $? = 0
|
||
+configure:3304: result: yes
|
||
+configure:3328: checking for getifaddrs
|
||
+configure:3385: gcc -o conftest -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:3391: $? = 0
|
||
+configure:3395: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:3398: $? = 0
|
||
+configure:3401: test -s conftest
|
||
+configure:3404: $? = 0
|
||
+configure:3416: result: yes
|
||
+configure:3440: checking for if_nametoindex
|
||
+configure:3497: gcc -o conftest -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:3503: $? = 0
|
||
+configure:3507: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:3510: $? = 0
|
||
+configure:3513: test -s conftest
|
||
+configure:3516: $? = 0
|
||
+configure:3528: result: yes
|
||
+configure:3543: checking for strlcpy
|
||
+configure:3600: gcc -o conftest -g -O2 -I$(srcdir) conftest.c >&5
|
||
+/tmp/cc6lwbyn.o: In function `main':
|
||
+/home/jerry/broadcom/VMG5313/userspace/zyxel/public/apps/dhcpv6/conftest.c:53: undefined reference to `strlcpy'
|
||
+/tmp/cc6lwbyn.o:(.data+0x0): undefined reference to `strlcpy'
|
||
+collect2: ld returned 1 exit status
|
||
+configure:3606: $? = 1
|
||
+configure: failed program was:
|
||
+| /* confdefs.h. */
|
||
+|
|
||
+| #define PACKAGE_NAME ""
|
||
+| #define PACKAGE_TARNAME ""
|
||
+| #define PACKAGE_VERSION ""
|
||
+| #define PACKAGE_STRING ""
|
||
+| #define PACKAGE_BUGREPORT ""
|
||
+| #define YYTEXT_POINTER 1
|
||
+| #define HAVE_GETADDRINFO 1
|
||
+| #define HAVE_GETNAMEINFO 1
|
||
+| #define HAVE_GETIFADDRS 1
|
||
+| #define HAVE_IF_NAMETOINDEX 1
|
||
+| /* end confdefs.h. */
|
||
+| /* Define strlcpy to an innocuous variant, in case <limits.h> declares strlcpy.
|
||
+| For example, HP-UX 11i <limits.h> declares gettimeofday. */
|
||
+| #define strlcpy innocuous_strlcpy
|
||
+|
|
||
+| /* System header to define __stub macros and hopefully few prototypes,
|
||
+| which can conflict with char strlcpy (); below.
|
||
+| Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|
||
+| <limits.h> exists even on freestanding compilers. */
|
||
+|
|
||
+| #ifdef __STDC__
|
||
+| # include <limits.h>
|
||
+| #else
|
||
+| # include <assert.h>
|
||
+| #endif
|
||
+|
|
||
+| #undef strlcpy
|
||
+|
|
||
+| /* Override any gcc2 internal prototype to avoid an error. */
|
||
+| #ifdef __cplusplus
|
||
+| extern "C"
|
||
+| {
|
||
+| #endif
|
||
+| /* We use char because int might match the return type of a gcc2
|
||
+| builtin and then its argument prototype would still apply. */
|
||
+| char strlcpy ();
|
||
+| /* The GNU C library defines this for functions which it implements
|
||
+| to always fail with ENOSYS. Some functions are actually named
|
||
+| something starting with __ and the normal name is an alias. */
|
||
+| #if defined (__stub_strlcpy) || defined (__stub___strlcpy)
|
||
+| choke me
|
||
+| #else
|
||
+| char (*f) () = strlcpy;
|
||
+| #endif
|
||
+| #ifdef __cplusplus
|
||
+| }
|
||
+| #endif
|
||
+|
|
||
+| int
|
||
+| main ()
|
||
+| {
|
||
+| return f != strlcpy;
|
||
+| ;
|
||
+| return 0;
|
||
+| }
|
||
+configure:3631: result: no
|
||
+configure:3543: checking for strlcat
|
||
+configure:3600: gcc -o conftest -g -O2 -I$(srcdir) conftest.c >&5
|
||
+/tmp/ccc9dgWI.o: In function `main':
|
||
+/home/jerry/broadcom/VMG5313/userspace/zyxel/public/apps/dhcpv6/conftest.c:53: undefined reference to `strlcat'
|
||
+/tmp/ccc9dgWI.o:(.data+0x0): undefined reference to `strlcat'
|
||
+collect2: ld returned 1 exit status
|
||
+configure:3606: $? = 1
|
||
+configure: failed program was:
|
||
+| /* confdefs.h. */
|
||
+|
|
||
+| #define PACKAGE_NAME ""
|
||
+| #define PACKAGE_TARNAME ""
|
||
+| #define PACKAGE_VERSION ""
|
||
+| #define PACKAGE_STRING ""
|
||
+| #define PACKAGE_BUGREPORT ""
|
||
+| #define YYTEXT_POINTER 1
|
||
+| #define HAVE_GETADDRINFO 1
|
||
+| #define HAVE_GETNAMEINFO 1
|
||
+| #define HAVE_GETIFADDRS 1
|
||
+| #define HAVE_IF_NAMETOINDEX 1
|
||
+| /* end confdefs.h. */
|
||
+| /* Define strlcat to an innocuous variant, in case <limits.h> declares strlcat.
|
||
+| For example, HP-UX 11i <limits.h> declares gettimeofday. */
|
||
+| #define strlcat innocuous_strlcat
|
||
+|
|
||
+| /* System header to define __stub macros and hopefully few prototypes,
|
||
+| which can conflict with char strlcat (); below.
|
||
+| Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|
||
+| <limits.h> exists even on freestanding compilers. */
|
||
+|
|
||
+| #ifdef __STDC__
|
||
+| # include <limits.h>
|
||
+| #else
|
||
+| # include <assert.h>
|
||
+| #endif
|
||
+|
|
||
+| #undef strlcat
|
||
+|
|
||
+| /* Override any gcc2 internal prototype to avoid an error. */
|
||
+| #ifdef __cplusplus
|
||
+| extern "C"
|
||
+| {
|
||
+| #endif
|
||
+| /* We use char because int might match the return type of a gcc2
|
||
+| builtin and then its argument prototype would still apply. */
|
||
+| char strlcat ();
|
||
+| /* The GNU C library defines this for functions which it implements
|
||
+| to always fail with ENOSYS. Some functions are actually named
|
||
+| something starting with __ and the normal name is an alias. */
|
||
+| #if defined (__stub_strlcat) || defined (__stub___strlcat)
|
||
+| choke me
|
||
+| #else
|
||
+| char (*f) () = strlcat;
|
||
+| #endif
|
||
+| #ifdef __cplusplus
|
||
+| }
|
||
+| #endif
|
||
+|
|
||
+| int
|
||
+| main ()
|
||
+| {
|
||
+| return f != strlcat;
|
||
+| ;
|
||
+| return 0;
|
||
+| }
|
||
+configure:3631: result: no
|
||
+configure:3655: checking for daemon
|
||
+configure:3712: gcc -o conftest -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:3718: $? = 0
|
||
+configure:3722: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:3725: $? = 0
|
||
+configure:3728: test -s conftest
|
||
+configure:3731: $? = 0
|
||
+configure:3743: result: yes
|
||
+configure:3767: checking for warnx
|
||
+configure:3824: gcc -o conftest -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:3830: $? = 0
|
||
+configure:3834: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:3837: $? = 0
|
||
+configure:3840: test -s conftest
|
||
+configure:3843: $? = 0
|
||
+configure:3855: result: yes
|
||
+configure:3876: checking for ANSI C header files
|
||
+configure:3901: gcc -c -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:3907: $? = 0
|
||
+configure:3911: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:3914: $? = 0
|
||
+configure:3917: test -s conftest.o
|
||
+configure:3920: $? = 0
|
||
+configure:4009: gcc -o conftest -g -O2 -I$(srcdir) conftest.c >&5
|
||
+conftest.c: In function 'main':
|
||
+conftest.c:33: warning: incompatible implicit declaration of built-in function 'exit'
|
||
+configure:4012: $? = 0
|
||
+configure:4014: ./conftest
|
||
+configure:4017: $? = 0
|
||
+configure:4032: result: yes
|
||
+configure:4056: checking for sys/types.h
|
||
+configure:4072: gcc -c -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:4078: $? = 0
|
||
+configure:4082: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:4085: $? = 0
|
||
+configure:4088: test -s conftest.o
|
||
+configure:4091: $? = 0
|
||
+configure:4102: result: yes
|
||
+configure:4056: checking for sys/stat.h
|
||
+configure:4072: gcc -c -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:4078: $? = 0
|
||
+configure:4082: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:4085: $? = 0
|
||
+configure:4088: test -s conftest.o
|
||
+configure:4091: $? = 0
|
||
+configure:4102: result: yes
|
||
+configure:4056: checking for stdlib.h
|
||
+configure:4072: gcc -c -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:4078: $? = 0
|
||
+configure:4082: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:4085: $? = 0
|
||
+configure:4088: test -s conftest.o
|
||
+configure:4091: $? = 0
|
||
+configure:4102: result: yes
|
||
+configure:4056: checking for string.h
|
||
+configure:4072: gcc -c -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:4078: $? = 0
|
||
+configure:4082: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:4085: $? = 0
|
||
+configure:4088: test -s conftest.o
|
||
+configure:4091: $? = 0
|
||
+configure:4102: result: yes
|
||
+configure:4056: checking for memory.h
|
||
+configure:4072: gcc -c -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:4078: $? = 0
|
||
+configure:4082: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:4085: $? = 0
|
||
+configure:4088: test -s conftest.o
|
||
+configure:4091: $? = 0
|
||
+configure:4102: result: yes
|
||
+configure:4056: checking for strings.h
|
||
+configure:4072: gcc -c -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:4078: $? = 0
|
||
+configure:4082: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:4085: $? = 0
|
||
+configure:4088: test -s conftest.o
|
||
+configure:4091: $? = 0
|
||
+configure:4102: result: yes
|
||
+configure:4056: checking for inttypes.h
|
||
+configure:4072: gcc -c -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:4078: $? = 0
|
||
+configure:4082: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:4085: $? = 0
|
||
+configure:4088: test -s conftest.o
|
||
+configure:4091: $? = 0
|
||
+configure:4102: result: yes
|
||
+configure:4056: checking for stdint.h
|
||
+configure:4072: gcc -c -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:4078: $? = 0
|
||
+configure:4082: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:4085: $? = 0
|
||
+configure:4088: test -s conftest.o
|
||
+configure:4091: $? = 0
|
||
+configure:4102: result: yes
|
||
+configure:4056: checking for unistd.h
|
||
+configure:4072: gcc -c -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:4078: $? = 0
|
||
+configure:4082: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:4085: $? = 0
|
||
+configure:4088: test -s conftest.o
|
||
+configure:4091: $? = 0
|
||
+configure:4102: result: yes
|
||
+configure:4133: checking fcntl.h usability
|
||
+configure:4145: gcc -c -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:4151: $? = 0
|
||
+configure:4155: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:4158: $? = 0
|
||
+configure:4161: test -s conftest.o
|
||
+configure:4164: $? = 0
|
||
+configure:4174: result: yes
|
||
+configure:4178: checking fcntl.h presence
|
||
+configure:4188: gcc -E conftest.c
|
||
+configure:4194: $? = 0
|
||
+configure:4214: result: yes
|
||
+configure:4249: checking for fcntl.h
|
||
+configure:4256: result: yes
|
||
+configure:4133: checking sys/ioctl.h usability
|
||
+configure:4145: gcc -c -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:4151: $? = 0
|
||
+configure:4155: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:4158: $? = 0
|
||
+configure:4161: test -s conftest.o
|
||
+configure:4164: $? = 0
|
||
+configure:4174: result: yes
|
||
+configure:4178: checking sys/ioctl.h presence
|
||
+configure:4188: gcc -E conftest.c
|
||
+configure:4194: $? = 0
|
||
+configure:4214: result: yes
|
||
+configure:4249: checking for sys/ioctl.h
|
||
+configure:4256: result: yes
|
||
+configure:4133: checking sys/time.h usability
|
||
+configure:4145: gcc -c -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:4151: $? = 0
|
||
+configure:4155: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:4158: $? = 0
|
||
+configure:4161: test -s conftest.o
|
||
+configure:4164: $? = 0
|
||
+configure:4174: result: yes
|
||
+configure:4178: checking sys/time.h presence
|
||
+configure:4188: gcc -E conftest.c
|
||
+configure:4194: $? = 0
|
||
+configure:4214: result: yes
|
||
+configure:4249: checking for sys/time.h
|
||
+configure:4256: result: yes
|
||
+configure:4133: checking syslog.h usability
|
||
+configure:4145: gcc -c -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:4151: $? = 0
|
||
+configure:4155: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:4158: $? = 0
|
||
+configure:4161: test -s conftest.o
|
||
+configure:4164: $? = 0
|
||
+configure:4174: result: yes
|
||
+configure:4178: checking syslog.h presence
|
||
+configure:4188: gcc -E conftest.c
|
||
+configure:4194: $? = 0
|
||
+configure:4214: result: yes
|
||
+configure:4249: checking for syslog.h
|
||
+configure:4256: result: yes
|
||
+configure:4124: checking for unistd.h
|
||
+configure:4129: result: yes
|
||
+configure:4133: checking ifaddrs.h usability
|
||
+configure:4145: gcc -c -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:4151: $? = 0
|
||
+configure:4155: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:4158: $? = 0
|
||
+configure:4161: test -s conftest.o
|
||
+configure:4164: $? = 0
|
||
+configure:4174: result: yes
|
||
+configure:4178: checking ifaddrs.h presence
|
||
+configure:4188: gcc -E conftest.c
|
||
+configure:4194: $? = 0
|
||
+configure:4214: result: yes
|
||
+configure:4249: checking for ifaddrs.h
|
||
+configure:4256: result: yes
|
||
+configure:4269: checking for socklen_t
|
||
+configure:4288: gcc -c -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:4294: $? = 0
|
||
+configure:4298: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:4301: $? = 0
|
||
+configure:4304: test -s conftest.o
|
||
+configure:4307: $? = 0
|
||
+configure:4309: result: yes
|
||
+configure:4386: checking for an ANSI C-conforming const
|
||
+configure:4453: gcc -c -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:4459: $? = 0
|
||
+configure:4463: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:4466: $? = 0
|
||
+configure:4469: test -s conftest.o
|
||
+configure:4472: $? = 0
|
||
+configure:4483: result: yes
|
||
+configure:4493: checking for size_t
|
||
+configure:4517: gcc -c -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:4523: $? = 0
|
||
+configure:4527: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:4530: $? = 0
|
||
+configure:4533: test -s conftest.o
|
||
+configure:4536: $? = 0
|
||
+configure:4547: result: yes
|
||
+configure:4559: checking whether time.h and sys/time.h may both be included
|
||
+configure:4584: gcc -c -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:4590: $? = 0
|
||
+configure:4594: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:4597: $? = 0
|
||
+configure:4600: test -s conftest.o
|
||
+configure:4603: $? = 0
|
||
+configure:4614: result: yes
|
||
+configure:4624: checking whether struct tm is in sys/time.h or time.h
|
||
+configure:4647: gcc -c -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:4653: $? = 0
|
||
+configure:4657: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:4660: $? = 0
|
||
+configure:4663: test -s conftest.o
|
||
+configure:4666: $? = 0
|
||
+configure:4677: result: time.h
|
||
+configure:4687: checking for struct tm.tm_zone
|
||
+configure:4713: gcc -c -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:4719: $? = 0
|
||
+configure:4723: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:4726: $? = 0
|
||
+configure:4729: test -s conftest.o
|
||
+configure:4732: $? = 0
|
||
+configure:4792: result: yes
|
||
+configure:4877: checking for sig_atomic_t
|
||
+configure:4903: gcc -c -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:4909: $? = 0
|
||
+configure:4913: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:4916: $? = 0
|
||
+configure:4919: test -s conftest.o
|
||
+configure:4922: $? = 0
|
||
+configure:4933: result: yes
|
||
+configure:4951: checking whether getpgrp requires zero arguments
|
||
+configure:4973: gcc -c -g -O2 -I$(srcdir) conftest.c >&5
|
||
+conftest.c: In function 'main':
|
||
+conftest.c:73: error: too many arguments to function 'getpgrp'
|
||
+configure:4979: $? = 1
|
||
+configure: failed program was:
|
||
+| /* confdefs.h. */
|
||
+|
|
||
+| #define PACKAGE_NAME ""
|
||
+| #define PACKAGE_TARNAME ""
|
||
+| #define PACKAGE_VERSION ""
|
||
+| #define PACKAGE_STRING ""
|
||
+| #define PACKAGE_BUGREPORT ""
|
||
+| #define YYTEXT_POINTER 1
|
||
+| #define HAVE_GETADDRINFO 1
|
||
+| #define HAVE_GETNAMEINFO 1
|
||
+| #define HAVE_GETIFADDRS 1
|
||
+| #define HAVE_IF_NAMETOINDEX 1
|
||
+| #define HAVE_DAEMON 1
|
||
+| #define HAVE_WARNX 1
|
||
+| #define STDC_HEADERS 1
|
||
+| #define HAVE_SYS_TYPES_H 1
|
||
+| #define HAVE_SYS_STAT_H 1
|
||
+| #define HAVE_STDLIB_H 1
|
||
+| #define HAVE_STRING_H 1
|
||
+| #define HAVE_MEMORY_H 1
|
||
+| #define HAVE_STRINGS_H 1
|
||
+| #define HAVE_INTTYPES_H 1
|
||
+| #define HAVE_STDINT_H 1
|
||
+| #define HAVE_UNISTD_H 1
|
||
+| #define HAVE_FCNTL_H 1
|
||
+| #define HAVE_SYS_IOCTL_H 1
|
||
+| #define HAVE_SYS_TIME_H 1
|
||
+| #define HAVE_SYSLOG_H 1
|
||
+| #define HAVE_UNISTD_H 1
|
||
+| #define HAVE_IFADDRS_H 1
|
||
+| #define TIME_WITH_SYS_TIME 1
|
||
+| #define HAVE_STRUCT_TM_TM_ZONE 1
|
||
+| #define HAVE_TM_ZONE 1
|
||
+| #define HAVE_SIG_ATOMIC_T 1
|
||
+| /* end confdefs.h. */
|
||
+| #include <stdio.h>
|
||
+| #if HAVE_SYS_TYPES_H
|
||
+| # include <sys/types.h>
|
||
+| #endif
|
||
+| #if HAVE_SYS_STAT_H
|
||
+| # include <sys/stat.h>
|
||
+| #endif
|
||
+| #if STDC_HEADERS
|
||
+| # include <stdlib.h>
|
||
+| # include <stddef.h>
|
||
+| #else
|
||
+| # if HAVE_STDLIB_H
|
||
+| # include <stdlib.h>
|
||
+| # endif
|
||
+| #endif
|
||
+| #if HAVE_STRING_H
|
||
+| # if !STDC_HEADERS && HAVE_MEMORY_H
|
||
+| # include <memory.h>
|
||
+| # endif
|
||
+| # include <string.h>
|
||
+| #endif
|
||
+| #if HAVE_STRINGS_H
|
||
+| # include <strings.h>
|
||
+| #endif
|
||
+| #if HAVE_INTTYPES_H
|
||
+| # include <inttypes.h>
|
||
+| #else
|
||
+| # if HAVE_STDINT_H
|
||
+| # include <stdint.h>
|
||
+| # endif
|
||
+| #endif
|
||
+| #if HAVE_UNISTD_H
|
||
+| # include <unistd.h>
|
||
+| #endif
|
||
+| int
|
||
+| main ()
|
||
+| {
|
||
+| getpgrp (0);
|
||
+| ;
|
||
+| return 0;
|
||
+| }
|
||
+configure:5004: result: yes
|
||
+configure:5015: checking whether gcc needs -traditional
|
||
+configure:5057: result: no
|
||
+configure:5064: checking whether setpgrp takes no argument
|
||
+configure:5096: gcc -o conftest -g -O2 -I$(srcdir) conftest.c >&5
|
||
+conftest.c: In function 'main':
|
||
+conftest.c:47: warning: incompatible implicit declaration of built-in function 'exit'
|
||
+conftest.c:47: error: too many arguments to function 'setpgrp'
|
||
+configure:5099: $? = 1
|
||
+configure: program exited with status 1
|
||
+configure: failed program was:
|
||
+| /* confdefs.h. */
|
||
+|
|
||
+| #define PACKAGE_NAME ""
|
||
+| #define PACKAGE_TARNAME ""
|
||
+| #define PACKAGE_VERSION ""
|
||
+| #define PACKAGE_STRING ""
|
||
+| #define PACKAGE_BUGREPORT ""
|
||
+| #define YYTEXT_POINTER 1
|
||
+| #define HAVE_GETADDRINFO 1
|
||
+| #define HAVE_GETNAMEINFO 1
|
||
+| #define HAVE_GETIFADDRS 1
|
||
+| #define HAVE_IF_NAMETOINDEX 1
|
||
+| #define HAVE_DAEMON 1
|
||
+| #define HAVE_WARNX 1
|
||
+| #define STDC_HEADERS 1
|
||
+| #define HAVE_SYS_TYPES_H 1
|
||
+| #define HAVE_SYS_STAT_H 1
|
||
+| #define HAVE_STDLIB_H 1
|
||
+| #define HAVE_STRING_H 1
|
||
+| #define HAVE_MEMORY_H 1
|
||
+| #define HAVE_STRINGS_H 1
|
||
+| #define HAVE_INTTYPES_H 1
|
||
+| #define HAVE_STDINT_H 1
|
||
+| #define HAVE_UNISTD_H 1
|
||
+| #define HAVE_FCNTL_H 1
|
||
+| #define HAVE_SYS_IOCTL_H 1
|
||
+| #define HAVE_SYS_TIME_H 1
|
||
+| #define HAVE_SYSLOG_H 1
|
||
+| #define HAVE_UNISTD_H 1
|
||
+| #define HAVE_IFADDRS_H 1
|
||
+| #define TIME_WITH_SYS_TIME 1
|
||
+| #define HAVE_STRUCT_TM_TM_ZONE 1
|
||
+| #define HAVE_TM_ZONE 1
|
||
+| #define HAVE_SIG_ATOMIC_T 1
|
||
+| #define GETPGRP_VOID 1
|
||
+| /* end confdefs.h. */
|
||
+| #if HAVE_UNISTD_H
|
||
+| # include <unistd.h>
|
||
+| #endif
|
||
+|
|
||
+| int
|
||
+| main ()
|
||
+| {
|
||
+| /* If this system has a BSD-style setpgrp which takes arguments,
|
||
+| setpgrp(1, 1) will fail with ESRCH and return -1, in that case
|
||
+| exit successfully. */
|
||
+| exit (setpgrp (1,1) == -1 ? 0 : 1);
|
||
+| ;
|
||
+| return 0;
|
||
+| }
|
||
+configure:5118: result: yes
|
||
+configure:5128: checking return type of signal handlers
|
||
+configure:5159: gcc -c -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:5165: $? = 0
|
||
+configure:5169: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:5172: $? = 0
|
||
+configure:5175: test -s conftest.o
|
||
+configure:5178: $? = 0
|
||
+configure:5189: result: void
|
||
+configure:5203: checking for mktime
|
||
+configure:5260: gcc -o conftest -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:5266: $? = 0
|
||
+configure:5270: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:5273: $? = 0
|
||
+configure:5276: test -s conftest
|
||
+configure:5279: $? = 0
|
||
+configure:5291: result: yes
|
||
+configure:5203: checking for select
|
||
+configure:5260: gcc -o conftest -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:5266: $? = 0
|
||
+configure:5270: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:5273: $? = 0
|
||
+configure:5276: test -s conftest
|
||
+configure:5279: $? = 0
|
||
+configure:5291: result: yes
|
||
+configure:5203: checking for socket
|
||
+configure:5260: gcc -o conftest -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:5266: $? = 0
|
||
+configure:5270: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:5273: $? = 0
|
||
+configure:5276: test -s conftest
|
||
+configure:5279: $? = 0
|
||
+configure:5291: result: yes
|
||
+configure:5305: checking for clock_gettime
|
||
+configure:5362: gcc -o conftest -g -O2 -I$(srcdir) conftest.c >&5
|
||
+/tmp/ccuiKDli.o: In function `main':
|
||
+/home/jerry/broadcom/VMG5313/userspace/zyxel/public/apps/dhcpv6/conftest.c:81: undefined reference to `clock_gettime'
|
||
+/tmp/ccuiKDli.o:(.data+0x0): undefined reference to `clock_gettime'
|
||
+collect2: ld returned 1 exit status
|
||
+configure:5368: $? = 1
|
||
+configure: failed program was:
|
||
+| /* confdefs.h. */
|
||
+|
|
||
+| #define PACKAGE_NAME ""
|
||
+| #define PACKAGE_TARNAME ""
|
||
+| #define PACKAGE_VERSION ""
|
||
+| #define PACKAGE_STRING ""
|
||
+| #define PACKAGE_BUGREPORT ""
|
||
+| #define YYTEXT_POINTER 1
|
||
+| #define HAVE_GETADDRINFO 1
|
||
+| #define HAVE_GETNAMEINFO 1
|
||
+| #define HAVE_GETIFADDRS 1
|
||
+| #define HAVE_IF_NAMETOINDEX 1
|
||
+| #define HAVE_DAEMON 1
|
||
+| #define HAVE_WARNX 1
|
||
+| #define STDC_HEADERS 1
|
||
+| #define HAVE_SYS_TYPES_H 1
|
||
+| #define HAVE_SYS_STAT_H 1
|
||
+| #define HAVE_STDLIB_H 1
|
||
+| #define HAVE_STRING_H 1
|
||
+| #define HAVE_MEMORY_H 1
|
||
+| #define HAVE_STRINGS_H 1
|
||
+| #define HAVE_INTTYPES_H 1
|
||
+| #define HAVE_STDINT_H 1
|
||
+| #define HAVE_UNISTD_H 1
|
||
+| #define HAVE_FCNTL_H 1
|
||
+| #define HAVE_SYS_IOCTL_H 1
|
||
+| #define HAVE_SYS_TIME_H 1
|
||
+| #define HAVE_SYSLOG_H 1
|
||
+| #define HAVE_UNISTD_H 1
|
||
+| #define HAVE_IFADDRS_H 1
|
||
+| #define TIME_WITH_SYS_TIME 1
|
||
+| #define HAVE_STRUCT_TM_TM_ZONE 1
|
||
+| #define HAVE_TM_ZONE 1
|
||
+| #define HAVE_SIG_ATOMIC_T 1
|
||
+| #define GETPGRP_VOID 1
|
||
+| #define SETPGRP_VOID 1
|
||
+| #define RETSIGTYPE void
|
||
+| #define HAVE_MKTIME 1
|
||
+| #define HAVE_SELECT 1
|
||
+| #define HAVE_SOCKET 1
|
||
+| /* end confdefs.h. */
|
||
+| /* Define clock_gettime to an innocuous variant, in case <limits.h> declares clock_gettime.
|
||
+| For example, HP-UX 11i <limits.h> declares gettimeofday. */
|
||
+| #define clock_gettime innocuous_clock_gettime
|
||
+|
|
||
+| /* System header to define __stub macros and hopefully few prototypes,
|
||
+| which can conflict with char clock_gettime (); below.
|
||
+| Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|
||
+| <limits.h> exists even on freestanding compilers. */
|
||
+|
|
||
+| #ifdef __STDC__
|
||
+| # include <limits.h>
|
||
+| #else
|
||
+| # include <assert.h>
|
||
+| #endif
|
||
+|
|
||
+| #undef clock_gettime
|
||
+|
|
||
+| /* Override any gcc2 internal prototype to avoid an error. */
|
||
+| #ifdef __cplusplus
|
||
+| extern "C"
|
||
+| {
|
||
+| #endif
|
||
+| /* We use char because int might match the return type of a gcc2
|
||
+| builtin and then its argument prototype would still apply. */
|
||
+| char clock_gettime ();
|
||
+| /* The GNU C library defines this for functions which it implements
|
||
+| to always fail with ENOSYS. Some functions are actually named
|
||
+| something starting with __ and the normal name is an alias. */
|
||
+| #if defined (__stub_clock_gettime) || defined (__stub___clock_gettime)
|
||
+| choke me
|
||
+| #else
|
||
+| char (*f) () = clock_gettime;
|
||
+| #endif
|
||
+| #ifdef __cplusplus
|
||
+| }
|
||
+| #endif
|
||
+|
|
||
+| int
|
||
+| main ()
|
||
+| {
|
||
+| return f != clock_gettime;
|
||
+| ;
|
||
+| return 0;
|
||
+| }
|
||
+configure:5393: result: no
|
||
+configure:5404: checking for local DB directory
|
||
+configure:5414: result: /var/db
|
||
+configure:5422: checking for arc4random
|
||
+configure:5479: gcc -o conftest -g -O2 -I$(srcdir) conftest.c >&5
|
||
+/tmp/ccgKbU6x.o: In function `main':
|
||
+/home/jerry/broadcom/VMG5313/userspace/zyxel/public/apps/dhcpv6/conftest.c:81: undefined reference to `arc4random'
|
||
+/tmp/ccgKbU6x.o:(.data+0x0): undefined reference to `arc4random'
|
||
+collect2: ld returned 1 exit status
|
||
+configure:5485: $? = 1
|
||
+configure: failed program was:
|
||
+| /* confdefs.h. */
|
||
+|
|
||
+| #define PACKAGE_NAME ""
|
||
+| #define PACKAGE_TARNAME ""
|
||
+| #define PACKAGE_VERSION ""
|
||
+| #define PACKAGE_STRING ""
|
||
+| #define PACKAGE_BUGREPORT ""
|
||
+| #define YYTEXT_POINTER 1
|
||
+| #define HAVE_GETADDRINFO 1
|
||
+| #define HAVE_GETNAMEINFO 1
|
||
+| #define HAVE_GETIFADDRS 1
|
||
+| #define HAVE_IF_NAMETOINDEX 1
|
||
+| #define HAVE_DAEMON 1
|
||
+| #define HAVE_WARNX 1
|
||
+| #define STDC_HEADERS 1
|
||
+| #define HAVE_SYS_TYPES_H 1
|
||
+| #define HAVE_SYS_STAT_H 1
|
||
+| #define HAVE_STDLIB_H 1
|
||
+| #define HAVE_STRING_H 1
|
||
+| #define HAVE_MEMORY_H 1
|
||
+| #define HAVE_STRINGS_H 1
|
||
+| #define HAVE_INTTYPES_H 1
|
||
+| #define HAVE_STDINT_H 1
|
||
+| #define HAVE_UNISTD_H 1
|
||
+| #define HAVE_FCNTL_H 1
|
||
+| #define HAVE_SYS_IOCTL_H 1
|
||
+| #define HAVE_SYS_TIME_H 1
|
||
+| #define HAVE_SYSLOG_H 1
|
||
+| #define HAVE_UNISTD_H 1
|
||
+| #define HAVE_IFADDRS_H 1
|
||
+| #define TIME_WITH_SYS_TIME 1
|
||
+| #define HAVE_STRUCT_TM_TM_ZONE 1
|
||
+| #define HAVE_TM_ZONE 1
|
||
+| #define HAVE_SIG_ATOMIC_T 1
|
||
+| #define GETPGRP_VOID 1
|
||
+| #define SETPGRP_VOID 1
|
||
+| #define RETSIGTYPE void
|
||
+| #define HAVE_MKTIME 1
|
||
+| #define HAVE_SELECT 1
|
||
+| #define HAVE_SOCKET 1
|
||
+| /* end confdefs.h. */
|
||
+| /* Define arc4random to an innocuous variant, in case <limits.h> declares arc4random.
|
||
+| For example, HP-UX 11i <limits.h> declares gettimeofday. */
|
||
+| #define arc4random innocuous_arc4random
|
||
+|
|
||
+| /* System header to define __stub macros and hopefully few prototypes,
|
||
+| which can conflict with char arc4random (); below.
|
||
+| Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|
||
+| <limits.h> exists even on freestanding compilers. */
|
||
+|
|
||
+| #ifdef __STDC__
|
||
+| # include <limits.h>
|
||
+| #else
|
||
+| # include <assert.h>
|
||
+| #endif
|
||
+|
|
||
+| #undef arc4random
|
||
+|
|
||
+| /* Override any gcc2 internal prototype to avoid an error. */
|
||
+| #ifdef __cplusplus
|
||
+| extern "C"
|
||
+| {
|
||
+| #endif
|
||
+| /* We use char because int might match the return type of a gcc2
|
||
+| builtin and then its argument prototype would still apply. */
|
||
+| char arc4random ();
|
||
+| /* The GNU C library defines this for functions which it implements
|
||
+| to always fail with ENOSYS. Some functions are actually named
|
||
+| something starting with __ and the normal name is an alias. */
|
||
+| #if defined (__stub_arc4random) || defined (__stub___arc4random)
|
||
+| choke me
|
||
+| #else
|
||
+| char (*f) () = arc4random;
|
||
+| #endif
|
||
+| #ifdef __cplusplus
|
||
+| }
|
||
+| #endif
|
||
+|
|
||
+| int
|
||
+| main ()
|
||
+| {
|
||
+| return f != arc4random;
|
||
+| ;
|
||
+| return 0;
|
||
+| }
|
||
+configure:5510: result: no
|
||
+configure:5531: checking if --enable-pedant option is specified
|
||
+configure:5542: result: no
|
||
+configure:5545: checking ANSI predeclared __func__
|
||
+configure:5563: gcc -c -g -O2 -I$(srcdir) conftest.c >&5
|
||
+conftest.c: In function 'func':
|
||
+conftest.c:46: warning: incompatible implicit declaration of built-in function 'printf'
|
||
+configure:5569: $? = 0
|
||
+configure:5573: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:5576: $? = 0
|
||
+configure:5579: test -s conftest.o
|
||
+configure:5582: $? = 0
|
||
+configure:5584: result: yes
|
||
+configure:5665: checking checking the existence TAILQ_FOREACH_REVERSE
|
||
+configure:5686: result: yes
|
||
+configure:5696: checking argument order of TAILQ_FOREACH_REVERSE
|
||
+configure:5728: gcc -c -g -O2 -I$(srcdir) conftest.c >&5
|
||
+In file included from /usr/include/stdio.h:907,
|
||
+ from conftest.c:48:
|
||
+/usr/include/bits/stdio.h: In function 'main':
|
||
+/usr/include/bits/stdio.h:46: error: nested function 'getchar' declared 'extern'
|
||
+/usr/include/bits/stdio.h:45: error: static declaration of 'getchar' follows non-static declaration
|
||
+/usr/include/stdio.h:520: note: previous declaration of 'getchar' was here
|
||
+/usr/include/bits/stdio.h:55: error: nested function 'fgetc_unlocked' declared 'extern'
|
||
+/usr/include/bits/stdio.h:54: error: static declaration of 'fgetc_unlocked' follows non-static declaration
|
||
+/usr/include/stdio.h:543: note: previous declaration of 'fgetc_unlocked' was here
|
||
+/usr/include/bits/stdio.h:65: error: nested function 'getc_unlocked' declared 'extern'
|
||
+/usr/include/bits/stdio.h:64: error: static declaration of 'getc_unlocked' follows non-static declaration
|
||
+/usr/include/stdio.h:532: note: previous declaration of 'getc_unlocked' was here
|
||
+/usr/include/bits/stdio.h:72: error: nested function 'getchar_unlocked' declared 'extern'
|
||
+/usr/include/bits/stdio.h:71: error: static declaration of 'getchar_unlocked' follows non-static declaration
|
||
+/usr/include/stdio.h:533: note: previous declaration of 'getchar_unlocked' was here
|
||
+/usr/include/bits/stdio.h:81: error: nested function 'putchar' declared 'extern'
|
||
+/usr/include/bits/stdio.h:80: error: static declaration of 'putchar' follows non-static declaration
|
||
+/usr/include/bits/stdio.h:90: error: nested function 'fputc_unlocked' declared 'extern'
|
||
+/usr/include/bits/stdio.h:89: error: static declaration of 'fputc_unlocked' follows non-static declaration
|
||
+/usr/include/bits/stdio.h:100: error: nested function 'putc_unlocked' declared 'extern'
|
||
+/usr/include/bits/stdio.h:99: error: static declaration of 'putc_unlocked' follows non-static declaration
|
||
+/usr/include/bits/stdio.h:107: error: nested function 'putchar_unlocked' declared 'extern'
|
||
+/usr/include/bits/stdio.h:106: error: static declaration of 'putchar_unlocked' follows non-static declaration
|
||
+/usr/include/bits/stdio.h:127: error: nested function 'feof_unlocked' declared 'extern'
|
||
+/usr/include/bits/stdio.h:126: error: static declaration of 'feof_unlocked' follows non-static declaration
|
||
+/usr/include/stdio.h:809: note: previous declaration of 'feof_unlocked' was here
|
||
+/usr/include/bits/stdio.h:134: error: nested function 'ferror_unlocked' declared 'extern'
|
||
+/usr/include/bits/stdio.h:133: error: static declaration of 'ferror_unlocked' follows non-static declaration
|
||
+/usr/include/stdio.h:810: note: previous declaration of 'ferror_unlocked' was here
|
||
+In file included from /usr/include/stdio.h:910,
|
||
+ from conftest.c:48:
|
||
+/usr/include/bits/stdio2.h:33: error: nested function 'sprintf' declared 'extern'
|
||
+/usr/include/bits/stdio2.h:32: error: static declaration of 'sprintf' follows non-static declaration
|
||
+/usr/include/bits/stdio2.h:46: error: nested function 'vsprintf' declared 'extern'
|
||
+/usr/include/bits/stdio2.h:44: error: static declaration of 'vsprintf' follows non-static declaration
|
||
+/usr/include/bits/stdio2.h:64: error: nested function 'snprintf' declared 'extern'
|
||
+/usr/include/bits/stdio2.h:62: error: static declaration of 'snprintf' follows non-static declaration
|
||
+/usr/include/bits/stdio2.h:77: error: nested function 'vsnprintf' declared 'extern'
|
||
+/usr/include/bits/stdio2.h:75: error: static declaration of 'vsnprintf' follows non-static declaration
|
||
+/usr/include/bits/stdio2.h:97: error: nested function 'fprintf' declared 'extern'
|
||
+/usr/include/bits/stdio2.h:96: error: static declaration of 'fprintf' follows non-static declaration
|
||
+/usr/include/bits/stdio2.h:104: error: nested function 'printf' declared 'extern'
|
||
+/usr/include/bits/stdio2.h:103: error: static declaration of 'printf' follows non-static declaration
|
||
+/usr/include/bits/stdio2.h:116: error: nested function 'vprintf' declared 'extern'
|
||
+/usr/include/bits/stdio2.h:115: error: static declaration of 'vprintf' follows non-static declaration
|
||
+/usr/include/bits/stdio2.h:127: error: nested function 'vfprintf' declared 'extern'
|
||
+/usr/include/bits/stdio2.h:125: error: static declaration of 'vfprintf' follows non-static declaration
|
||
+/usr/include/bits/stdio2.h:227: error: nested function 'gets' declared 'extern'
|
||
+/usr/include/bits/stdio2.h:226: error: static declaration of 'gets' follows non-static declaration
|
||
+/usr/include/stdio.h:612: note: previous declaration of 'gets' was here
|
||
+/usr/include/bits/stdio2.h:246: error: nested function 'fgets' declared 'extern'
|
||
+/usr/include/bits/stdio2.h:245: error: static declaration of 'fgets' follows non-static declaration
|
||
+/usr/include/stdio.h:604: note: previous declaration of 'fgets' was here
|
||
+/usr/include/bits/stdio2.h:276: error: nested function 'fread' declared 'extern'
|
||
+/usr/include/bits/stdio2.h:274: error: static declaration of 'fread' follows non-static declaration
|
||
+/usr/include/stdio.h:682: note: previous declaration of 'fread' was here
|
||
+/usr/include/bits/stdio2.h:337: error: nested function 'fread_unlocked' declared 'extern'
|
||
+/usr/include/bits/stdio2.h:335: error: static declaration of 'fread_unlocked' follows non-static declaration
|
||
+/usr/include/stdio.h:710: note: previous declaration of 'fread_unlocked' was here
|
||
+configure:5734: $? = 1
|
||
+configure: failed program was:
|
||
+| /* confdefs.h. */
|
||
+|
|
||
+| #define PACKAGE_NAME ""
|
||
+| #define PACKAGE_TARNAME ""
|
||
+| #define PACKAGE_VERSION ""
|
||
+| #define PACKAGE_STRING ""
|
||
+| #define PACKAGE_BUGREPORT ""
|
||
+| #define YYTEXT_POINTER 1
|
||
+| #define HAVE_GETADDRINFO 1
|
||
+| #define HAVE_GETNAMEINFO 1
|
||
+| #define HAVE_GETIFADDRS 1
|
||
+| #define HAVE_IF_NAMETOINDEX 1
|
||
+| #define HAVE_DAEMON 1
|
||
+| #define HAVE_WARNX 1
|
||
+| #define STDC_HEADERS 1
|
||
+| #define HAVE_SYS_TYPES_H 1
|
||
+| #define HAVE_SYS_STAT_H 1
|
||
+| #define HAVE_STDLIB_H 1
|
||
+| #define HAVE_STRING_H 1
|
||
+| #define HAVE_MEMORY_H 1
|
||
+| #define HAVE_STRINGS_H 1
|
||
+| #define HAVE_INTTYPES_H 1
|
||
+| #define HAVE_STDINT_H 1
|
||
+| #define HAVE_UNISTD_H 1
|
||
+| #define HAVE_FCNTL_H 1
|
||
+| #define HAVE_SYS_IOCTL_H 1
|
||
+| #define HAVE_SYS_TIME_H 1
|
||
+| #define HAVE_SYSLOG_H 1
|
||
+| #define HAVE_UNISTD_H 1
|
||
+| #define HAVE_IFADDRS_H 1
|
||
+| #define TIME_WITH_SYS_TIME 1
|
||
+| #define HAVE_STRUCT_TM_TM_ZONE 1
|
||
+| #define HAVE_TM_ZONE 1
|
||
+| #define HAVE_SIG_ATOMIC_T 1
|
||
+| #define GETPGRP_VOID 1
|
||
+| #define SETPGRP_VOID 1
|
||
+| #define RETSIGTYPE void
|
||
+| #define HAVE_MKTIME 1
|
||
+| #define HAVE_SELECT 1
|
||
+| #define HAVE_SOCKET 1
|
||
+| #define HAVE_ANSI_FUNC 1
|
||
+| /* end confdefs.h. */
|
||
+|
|
||
+| int
|
||
+| main ()
|
||
+| {
|
||
+|
|
||
+| #include <stdio.h>
|
||
+| #include <sys/queue.h>
|
||
+|
|
||
+| TAILQ_HEAD(tailhead, entry) head = TAILQ_HEAD_INITIALIZER(head);
|
||
+| struct entry {
|
||
+| TAILQ_ENTRY(entry) entries;
|
||
+| } *p;
|
||
+|
|
||
+| int i;
|
||
+| struct tailhead *headp;
|
||
+|
|
||
+| TAILQ_FOREACH_REVERSE(p, headp, tailhead, entries) {
|
||
+| }
|
||
+|
|
||
+| ;
|
||
+| return 0;
|
||
+| }
|
||
+configure:5759: result: old
|
||
+configure:5769: checking if you have a length field in struct sockaddr*
|
||
+configure:5796: gcc -c -g -O2 -I$(srcdir) conftest.c >&5
|
||
+conftest.c: In function 'main':
|
||
+conftest.c:53: error: 'struct sockaddr' has no member named 'sa_len'
|
||
+configure:5802: $? = 1
|
||
+configure: failed program was:
|
||
+| /* confdefs.h. */
|
||
+|
|
||
+| #define PACKAGE_NAME ""
|
||
+| #define PACKAGE_TARNAME ""
|
||
+| #define PACKAGE_VERSION ""
|
||
+| #define PACKAGE_STRING ""
|
||
+| #define PACKAGE_BUGREPORT ""
|
||
+| #define YYTEXT_POINTER 1
|
||
+| #define HAVE_GETADDRINFO 1
|
||
+| #define HAVE_GETNAMEINFO 1
|
||
+| #define HAVE_GETIFADDRS 1
|
||
+| #define HAVE_IF_NAMETOINDEX 1
|
||
+| #define HAVE_DAEMON 1
|
||
+| #define HAVE_WARNX 1
|
||
+| #define STDC_HEADERS 1
|
||
+| #define HAVE_SYS_TYPES_H 1
|
||
+| #define HAVE_SYS_STAT_H 1
|
||
+| #define HAVE_STDLIB_H 1
|
||
+| #define HAVE_STRING_H 1
|
||
+| #define HAVE_MEMORY_H 1
|
||
+| #define HAVE_STRINGS_H 1
|
||
+| #define HAVE_INTTYPES_H 1
|
||
+| #define HAVE_STDINT_H 1
|
||
+| #define HAVE_UNISTD_H 1
|
||
+| #define HAVE_FCNTL_H 1
|
||
+| #define HAVE_SYS_IOCTL_H 1
|
||
+| #define HAVE_SYS_TIME_H 1
|
||
+| #define HAVE_SYSLOG_H 1
|
||
+| #define HAVE_UNISTD_H 1
|
||
+| #define HAVE_IFADDRS_H 1
|
||
+| #define TIME_WITH_SYS_TIME 1
|
||
+| #define HAVE_STRUCT_TM_TM_ZONE 1
|
||
+| #define HAVE_TM_ZONE 1
|
||
+| #define HAVE_SIG_ATOMIC_T 1
|
||
+| #define GETPGRP_VOID 1
|
||
+| #define SETPGRP_VOID 1
|
||
+| #define RETSIGTYPE void
|
||
+| #define HAVE_MKTIME 1
|
||
+| #define HAVE_SELECT 1
|
||
+| #define HAVE_SOCKET 1
|
||
+| #define HAVE_ANSI_FUNC 1
|
||
+| #define HAVE_TAILQ_FOREACH_REVERSE_OLD 1
|
||
+| /* end confdefs.h. */
|
||
+|
|
||
+| #include <sys/types.h>
|
||
+| #include <sys/socket.h>
|
||
+|
|
||
+| int
|
||
+| main ()
|
||
+| {
|
||
+|
|
||
+| struct sockaddr a;
|
||
+| a.sa_len = 1;
|
||
+|
|
||
+| ;
|
||
+| return 0;
|
||
+| }
|
||
+configure:5827: result: no
|
||
+configure:5837: checking the owner of the programs
|
||
+configure:5847: result: bin
|
||
+configure:5851: checking the group owner of the programs
|
||
+configure:5861: result: bin
|
||
+configure:5879: checking stdarg.h usability
|
||
+configure:5891: gcc -c -g -O2 -I$(srcdir) conftest.c >&5
|
||
+configure:5897: $? = 0
|
||
+configure:5901: test -z
|
||
+ || test ! -s conftest.err
|
||
+configure:5904: $? = 0
|
||
+configure:5907: test -s conftest.o
|
||
+configure:5910: $? = 0
|
||
+configure:5920: result: yes
|
||
+configure:5924: checking stdarg.h presence
|
||
+configure:5934: gcc -E conftest.c
|
||
+configure:5940: $? = 0
|
||
+configure:5960: result: yes
|
||
+configure:5995: checking for stdarg.h
|
||
+configure:6002: result: yes
|
||
+configure:6143: creating ./config.status
|
||
+
|
||
+## ---------------------- ##
|
||
+## Running config.status. ##
|
||
+## ---------------------- ##
|
||
+
|
||
+This file was extended by config.status, which was
|
||
+generated by GNU Autoconf 2.59. Invocation command line was
|
||
+
|
||
+ CONFIG_FILES =
|
||
+ CONFIG_HEADERS =
|
||
+ CONFIG_LINKS =
|
||
+ CONFIG_COMMANDS =
|
||
+ $ ./config.status
|
||
+
|
||
+on jerry-desktop
|
||
+
|
||
+config.status:649: creating Makefile
|
||
+
|
||
+## ---------------- ##
|
||
+## Cache variables. ##
|
||
+## ---------------- ##
|
||
+
|
||
+ac_cv_c_compiler_gnu=yes
|
||
+ac_cv_c_const=yes
|
||
+ac_cv_env_CC_set=
|
||
+ac_cv_env_CC_value=
|
||
+ac_cv_env_CFLAGS_set=
|
||
+ac_cv_env_CFLAGS_value=
|
||
+ac_cv_env_CPPFLAGS_set=
|
||
+ac_cv_env_CPPFLAGS_value=
|
||
+ac_cv_env_CPP_set=
|
||
+ac_cv_env_CPP_value=
|
||
+ac_cv_env_LDFLAGS_set=
|
||
+ac_cv_env_LDFLAGS_value=
|
||
+ac_cv_env_build_alias_set=
|
||
+ac_cv_env_build_alias_value=
|
||
+ac_cv_env_host_alias_set=
|
||
+ac_cv_env_host_alias_value=
|
||
+ac_cv_env_target_alias_set=
|
||
+ac_cv_env_target_alias_value=
|
||
+ac_cv_exeext=
|
||
+ac_cv_func_arc4random=no
|
||
+ac_cv_func_clock_gettime=no
|
||
+ac_cv_func_daemon=yes
|
||
+ac_cv_func_getaddrinfo=yes
|
||
+ac_cv_func_getifaddrs=yes
|
||
+ac_cv_func_getnameinfo=yes
|
||
+ac_cv_func_getpgrp_void=yes
|
||
+ac_cv_func_if_nametoindex=yes
|
||
+ac_cv_func_mktime=yes
|
||
+ac_cv_func_select=yes
|
||
+ac_cv_func_setpgrp_void=yes
|
||
+ac_cv_func_socket=yes
|
||
+ac_cv_func_strlcat=no
|
||
+ac_cv_func_strlcpy=no
|
||
+ac_cv_func_warnx=yes
|
||
+ac_cv_header_fcntl_h=yes
|
||
+ac_cv_header_ifaddrs_h=yes
|
||
+ac_cv_header_inttypes_h=yes
|
||
+ac_cv_header_memory_h=yes
|
||
+ac_cv_header_stdarg_h=yes
|
||
+ac_cv_header_stdc=yes
|
||
+ac_cv_header_stdint_h=yes
|
||
+ac_cv_header_stdlib_h=yes
|
||
+ac_cv_header_string_h=yes
|
||
+ac_cv_header_strings_h=yes
|
||
+ac_cv_header_sys_ioctl_h=yes
|
||
+ac_cv_header_sys_stat_h=yes
|
||
+ac_cv_header_sys_time_h=yes
|
||
+ac_cv_header_sys_types_h=yes
|
||
+ac_cv_header_syslog_h=yes
|
||
+ac_cv_header_time=yes
|
||
+ac_cv_header_unistd_h=yes
|
||
+ac_cv_lib_fl_yywrap=yes
|
||
+ac_cv_member_struct_tm_tm_zone=yes
|
||
+ac_cv_objext=o
|
||
+ac_cv_path_install='/usr/bin/install -c'
|
||
+ac_cv_prog_CPP='gcc -E'
|
||
+ac_cv_prog_LEX=flex
|
||
+ac_cv_prog_YACC='bison -y'
|
||
+ac_cv_prog_ac_ct_CC=gcc
|
||
+ac_cv_prog_cc_g=yes
|
||
+ac_cv_prog_cc_stdc=
|
||
+ac_cv_prog_egrep='grep -E'
|
||
+ac_cv_prog_gcc_traditional=no
|
||
+ac_cv_prog_lex_root=lex.yy
|
||
+ac_cv_prog_lex_yytext_pointer=yes
|
||
+ac_cv_prog_make_make_set=yes
|
||
+ac_cv_struct_tm=time.h
|
||
+ac_cv_type_sig_atomic_t=yes
|
||
+ac_cv_type_signal=void
|
||
+ac_cv_type_size_t=yes
|
||
+ts_cv_sa_len=no
|
||
+
|
||
+## ----------------- ##
|
||
+## Output variables. ##
|
||
+## ----------------- ##
|
||
+
|
||
+CC='gcc'
|
||
+CFLAGS='-g -O2 -I$(srcdir)'
|
||
+CPP='gcc -E'
|
||
+CPPFLAGS=''
|
||
+DEFS='-DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DYYTEXT_POINTER=1 -DHAVE_GETADDRINFO=1 -DHAVE_GETNAMEINFO=1 -DHAVE_GETIFADDRS=1 -DHAVE_IF_NAMETOINDEX=1 -DHAVE_DAEMON=1 -DHAVE_WARNX=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYSLOG_H=1 -DHAVE_UNISTD_H=1 -DHAVE_IFADDRS_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_STRUCT_TM_TM_ZONE=1 -DHAVE_TM_ZONE=1 -DHAVE_SIG_ATOMIC_T=1 -DGETPGRP_VOID=1 -DSETPGRP_VOID=1 -DRETSIGTYPE=void -DHAVE_MKTIME=1 -DHAVE_SELECT=1 -DHAVE_SOCKET=1 -DHAVE_ANSI_FUNC=1 -DHAVE_TAILQ_FOREACH_REVERSE_OLD=1 -DHAVE_STDARG_H=1 '
|
||
+ECHO_C=''
|
||
+ECHO_N='-n'
|
||
+ECHO_T=''
|
||
+EGREP='grep -E'
|
||
+EXEEXT=''
|
||
+INSTALL_DATA='${INSTALL} -m 644'
|
||
+INSTALL_PROGRAM='${INSTALL}'
|
||
+INSTALL_SCRIPT='${INSTALL}'
|
||
+LDFLAGS=''
|
||
+LEX='flex'
|
||
+LEXLIB='-lfl'
|
||
+LEX_OUTPUT_ROOT='lex.yy'
|
||
+LIBOBJS=' strlcpy$U.o strlcat$U.o arc4random$U.o'
|
||
+LIBS=''
|
||
+LTLIBOBJS=' strlcpy$U.lo strlcat$U.lo arc4random$U.lo'
|
||
+OBJEXT='o'
|
||
+PACKAGE_BUGREPORT=''
|
||
+PACKAGE_NAME=''
|
||
+PACKAGE_STRING=''
|
||
+PACKAGE_TARNAME=''
|
||
+PACKAGE_VERSION=''
|
||
+PATH_SEPARATOR=':'
|
||
+SET_MAKE=''
|
||
+SHELL='/bin/sh'
|
||
+YACC='bison -y'
|
||
+ac_ct_CC='gcc'
|
||
+bindir='${exec_prefix}/bin'
|
||
+build_alias=''
|
||
+datadir='${prefix}/share'
|
||
+exec_prefix='${prefix}'
|
||
+group='bin'
|
||
+host_alias=''
|
||
+includedir='${prefix}/include'
|
||
+infodir='${prefix}/info'
|
||
+libdir='${exec_prefix}/lib'
|
||
+libexecdir='${exec_prefix}/libexec'
|
||
+localdbdir='/var/db'
|
||
+localstatedir='${prefix}/var'
|
||
+mandir='${prefix}/man'
|
||
+oldincludedir='/usr/include'
|
||
+prefix='/usr/local'
|
||
+program_transform_name='s,x,x,'
|
||
+sbindir='${exec_prefix}/sbin'
|
||
+sharedstatedir='${prefix}/com'
|
||
+sysconfdir='${prefix}/etc'
|
||
+target_alias=''
|
||
+user='bin'
|
||
+
|
||
+## ----------- ##
|
||
+## confdefs.h. ##
|
||
+## ----------- ##
|
||
+
|
||
+#define GETPGRP_VOID 1
|
||
+#define HAVE_ANSI_FUNC 1
|
||
+#define HAVE_DAEMON 1
|
||
+#define HAVE_FCNTL_H 1
|
||
+#define HAVE_GETADDRINFO 1
|
||
+#define HAVE_GETIFADDRS 1
|
||
+#define HAVE_GETNAMEINFO 1
|
||
+#define HAVE_IFADDRS_H 1
|
||
+#define HAVE_IF_NAMETOINDEX 1
|
||
+#define HAVE_INTTYPES_H 1
|
||
+#define HAVE_MEMORY_H 1
|
||
+#define HAVE_MKTIME 1
|
||
+#define HAVE_SELECT 1
|
||
+#define HAVE_SIG_ATOMIC_T 1
|
||
+#define HAVE_SOCKET 1
|
||
+#define HAVE_STDARG_H 1
|
||
+#define HAVE_STDINT_H 1
|
||
+#define HAVE_STDLIB_H 1
|
||
+#define HAVE_STRINGS_H 1
|
||
+#define HAVE_STRING_H 1
|
||
+#define HAVE_STRUCT_TM_TM_ZONE 1
|
||
+#define HAVE_SYSLOG_H 1
|
||
+#define HAVE_SYS_IOCTL_H 1
|
||
+#define HAVE_SYS_STAT_H 1
|
||
+#define HAVE_SYS_TIME_H 1
|
||
+#define HAVE_SYS_TYPES_H 1
|
||
+#define HAVE_TAILQ_FOREACH_REVERSE_OLD 1
|
||
+#define HAVE_TM_ZONE 1
|
||
+#define HAVE_UNISTD_H 1
|
||
+#define HAVE_UNISTD_H 1
|
||
+#define HAVE_WARNX 1
|
||
+#define PACKAGE_BUGREPORT ""
|
||
+#define PACKAGE_NAME ""
|
||
+#define PACKAGE_STRING ""
|
||
+#define PACKAGE_TARNAME ""
|
||
+#define PACKAGE_VERSION ""
|
||
+#define RETSIGTYPE void
|
||
+#define SETPGRP_VOID 1
|
||
+#define STDC_HEADERS 1
|
||
+#define TIME_WITH_SYS_TIME 1
|
||
+#define YYTEXT_POINTER 1
|
||
+
|
||
+configure: exit 0
|
||
diff -Naur wide-dhcpv6-20080615.orig/config.status wide-dhcpv6-20080615/config.status
|
||
--- wide-dhcpv6-20080615.orig/config.status 1970-01-01 08:00:00.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/config.status 2013-12-30 16:11:43.000000000 +0800
|
||
@@ -0,0 +1,723 @@
|
||
+#! /bin/sh
|
||
+# Generated by configure.
|
||
+# Run this file to recreate the current configuration.
|
||
+# Compiler output produced by configure, useful for debugging
|
||
+# configure, is in config.log if it exists.
|
||
+
|
||
+debug=false
|
||
+ac_cs_recheck=false
|
||
+ac_cs_silent=false
|
||
+SHELL=${CONFIG_SHELL-/bin/sh}
|
||
+## --------------------- ##
|
||
+## M4sh Initialization. ##
|
||
+## --------------------- ##
|
||
+
|
||
+# Be Bourne compatible
|
||
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
|
||
+ emulate sh
|
||
+ NULLCMD=:
|
||
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
|
||
+ # is contrary to our usage. Disable this feature.
|
||
+ alias -g '${1+"$@"}'='"$@"'
|
||
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
|
||
+ set -o posix
|
||
+fi
|
||
+DUALCASE=1; export DUALCASE # for MKS sh
|
||
+
|
||
+# Support unset when possible.
|
||
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
|
||
+ as_unset=unset
|
||
+else
|
||
+ as_unset=false
|
||
+fi
|
||
+
|
||
+
|
||
+# Work around bugs in pre-3.0 UWIN ksh.
|
||
+$as_unset ENV MAIL MAILPATH
|
||
+PS1='$ '
|
||
+PS2='> '
|
||
+PS4='+ '
|
||
+
|
||
+# NLS nuisances.
|
||
+for as_var in \
|
||
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
|
||
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
|
||
+ LC_TELEPHONE LC_TIME
|
||
+do
|
||
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
|
||
+ eval $as_var=C; export $as_var
|
||
+ else
|
||
+ $as_unset $as_var
|
||
+ fi
|
||
+done
|
||
+
|
||
+# Required to use basename.
|
||
+if expr a : '\(a\)' >/dev/null 2>&1; then
|
||
+ as_expr=expr
|
||
+else
|
||
+ as_expr=false
|
||
+fi
|
||
+
|
||
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
|
||
+ as_basename=basename
|
||
+else
|
||
+ as_basename=false
|
||
+fi
|
||
+
|
||
+
|
||
+# Name of the executable.
|
||
+as_me=`$as_basename "$0" ||
|
||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
|
||
+ X"$0" : 'X\(//\)$' \| \
|
||
+ X"$0" : 'X\(/\)$' \| \
|
||
+ . : '\(.\)' 2>/dev/null ||
|
||
+echo X/"$0" |
|
||
+ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
|
||
+ /^X\/\(\/\/\)$/{ s//\1/; q; }
|
||
+ /^X\/\(\/\).*/{ s//\1/; q; }
|
||
+ s/.*/./; q'`
|
||
+
|
||
+
|
||
+# PATH needs CR, and LINENO needs CR and PATH.
|
||
+# Avoid depending upon Character Ranges.
|
||
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
|
||
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
||
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
|
||
+as_cr_digits='0123456789'
|
||
+as_cr_alnum=$as_cr_Letters$as_cr_digits
|
||
+
|
||
+# The user is always right.
|
||
+if test "${PATH_SEPARATOR+set}" != set; then
|
||
+ echo "#! /bin/sh" >conf$$.sh
|
||
+ echo "exit 0" >>conf$$.sh
|
||
+ chmod +x conf$$.sh
|
||
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
|
||
+ PATH_SEPARATOR=';'
|
||
+ else
|
||
+ PATH_SEPARATOR=:
|
||
+ fi
|
||
+ rm -f conf$$.sh
|
||
+fi
|
||
+
|
||
+
|
||
+ as_lineno_1=$LINENO
|
||
+ as_lineno_2=$LINENO
|
||
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
|
||
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
|
||
+ test "x$as_lineno_3" = "x$as_lineno_2" || {
|
||
+ # Find who we are. Look in the path if we contain no path at all
|
||
+ # relative or not.
|
||
+ case $0 in
|
||
+ *[\\/]* ) as_myself=$0 ;;
|
||
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||
+for as_dir in $PATH
|
||
+do
|
||
+ IFS=$as_save_IFS
|
||
+ test -z "$as_dir" && as_dir=.
|
||
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
|
||
+done
|
||
+
|
||
+ ;;
|
||
+ esac
|
||
+ # We did not find ourselves, most probably we were run as `sh COMMAND'
|
||
+ # in which case we are not to be found in the path.
|
||
+ if test "x$as_myself" = x; then
|
||
+ as_myself=$0
|
||
+ fi
|
||
+ if test ! -f "$as_myself"; then
|
||
+ { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
|
||
+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
|
||
+ { (exit 1); exit 1; }; }
|
||
+ fi
|
||
+ case $CONFIG_SHELL in
|
||
+ '')
|
||
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
|
||
+do
|
||
+ IFS=$as_save_IFS
|
||
+ test -z "$as_dir" && as_dir=.
|
||
+ for as_base in sh bash ksh sh5; do
|
||
+ case $as_dir in
|
||
+ /*)
|
||
+ if ("$as_dir/$as_base" -c '
|
||
+ as_lineno_1=$LINENO
|
||
+ as_lineno_2=$LINENO
|
||
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
|
||
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
|
||
+ test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
|
||
+ $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
|
||
+ $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
|
||
+ CONFIG_SHELL=$as_dir/$as_base
|
||
+ export CONFIG_SHELL
|
||
+ exec "$CONFIG_SHELL" "$0" ${1+"$@"}
|
||
+ fi;;
|
||
+ esac
|
||
+ done
|
||
+done
|
||
+;;
|
||
+ esac
|
||
+
|
||
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
|
||
+ # uniformly replaced by the line number. The first 'sed' inserts a
|
||
+ # line-number line before each line; the second 'sed' does the real
|
||
+ # work. The second script uses 'N' to pair each line-number line
|
||
+ # with the numbered line, and appends trailing '-' during
|
||
+ # substitution so that $LINENO is not a special case at line end.
|
||
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
|
||
+ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
|
||
+ sed '=' <$as_myself |
|
||
+ sed '
|
||
+ N
|
||
+ s,$,-,
|
||
+ : loop
|
||
+ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
|
||
+ t loop
|
||
+ s,-$,,
|
||
+ s,^['$as_cr_digits']*\n,,
|
||
+ ' >$as_me.lineno &&
|
||
+ chmod +x $as_me.lineno ||
|
||
+ { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
|
||
+echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
|
||
+ { (exit 1); exit 1; }; }
|
||
+
|
||
+ # Don't try to exec as it changes $[0], causing all sort of problems
|
||
+ # (the dirname of $[0] is not the place where we might find the
|
||
+ # original and so on. Autoconf is especially sensible to this).
|
||
+ . ./$as_me.lineno
|
||
+ # Exit status is that of the last command.
|
||
+ exit
|
||
+}
|
||
+
|
||
+
|
||
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
|
||
+ *c*,-n*) ECHO_N= ECHO_C='
|
||
+' ECHO_T=' ' ;;
|
||
+ *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
|
||
+ *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
|
||
+esac
|
||
+
|
||
+if expr a : '\(a\)' >/dev/null 2>&1; then
|
||
+ as_expr=expr
|
||
+else
|
||
+ as_expr=false
|
||
+fi
|
||
+
|
||
+rm -f conf$$ conf$$.exe conf$$.file
|
||
+echo >conf$$.file
|
||
+if ln -s conf$$.file conf$$ 2>/dev/null; then
|
||
+ # We could just check for DJGPP; but this test a) works b) is more generic
|
||
+ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
|
||
+ if test -f conf$$.exe; then
|
||
+ # Don't use ln at all; we don't have any links
|
||
+ as_ln_s='cp -p'
|
||
+ else
|
||
+ as_ln_s='ln -s'
|
||
+ fi
|
||
+elif ln conf$$.file conf$$ 2>/dev/null; then
|
||
+ as_ln_s=ln
|
||
+else
|
||
+ as_ln_s='cp -p'
|
||
+fi
|
||
+rm -f conf$$ conf$$.exe conf$$.file
|
||
+
|
||
+if mkdir -p . 2>/dev/null; then
|
||
+ as_mkdir_p=:
|
||
+else
|
||
+ test -d ./-p && rmdir ./-p
|
||
+ as_mkdir_p=false
|
||
+fi
|
||
+
|
||
+as_executable_p="test -f"
|
||
+
|
||
+# Sed expression to map a string onto a valid CPP name.
|
||
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
|
||
+
|
||
+# Sed expression to map a string onto a valid variable name.
|
||
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
|
||
+
|
||
+
|
||
+# IFS
|
||
+# We need space, tab and new line, in precisely that order.
|
||
+as_nl='
|
||
+'
|
||
+IFS=" $as_nl"
|
||
+
|
||
+# CDPATH.
|
||
+$as_unset CDPATH
|
||
+
|
||
+exec 6>&1
|
||
+
|
||
+# Open the log real soon, to keep \$[0] and so on meaningful, and to
|
||
+# report actual input values of CONFIG_FILES etc. instead of their
|
||
+# values after options handling. Logging --version etc. is OK.
|
||
+exec 5>>config.log
|
||
+{
|
||
+ echo
|
||
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
|
||
+## Running $as_me. ##
|
||
+_ASBOX
|
||
+} >&5
|
||
+cat >&5 <<_CSEOF
|
||
+
|
||
+This file was extended by $as_me, which was
|
||
+generated by GNU Autoconf 2.59. Invocation command line was
|
||
+
|
||
+ CONFIG_FILES = $CONFIG_FILES
|
||
+ CONFIG_HEADERS = $CONFIG_HEADERS
|
||
+ CONFIG_LINKS = $CONFIG_LINKS
|
||
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
|
||
+ $ $0 $@
|
||
+
|
||
+_CSEOF
|
||
+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
|
||
+echo >&5
|
||
+config_files=" Makefile"
|
||
+
|
||
+ac_cs_usage="\
|
||
+\`$as_me' instantiates files from templates according to the
|
||
+current configuration.
|
||
+
|
||
+Usage: $0 [OPTIONS] [FILE]...
|
||
+
|
||
+ -h, --help print this help, then exit
|
||
+ -V, --version print version number, then exit
|
||
+ -q, --quiet do not print progress messages
|
||
+ -d, --debug don't remove temporary files
|
||
+ --recheck update $as_me by reconfiguring in the same conditions
|
||
+ --file=FILE[:TEMPLATE]
|
||
+ instantiate the configuration file FILE
|
||
+
|
||
+Configuration files:
|
||
+$config_files
|
||
+
|
||
+Report bugs to <bug-autoconf@gnu.org>."
|
||
+ac_cs_version="\
|
||
+config.status
|
||
+configured by ./configure, generated by GNU Autoconf 2.59,
|
||
+ with options \"\"
|
||
+
|
||
+Copyright (C) 2003 Free Software Foundation, Inc.
|
||
+This config.status script is free software; the Free Software Foundation
|
||
+gives unlimited permission to copy, distribute and modify it."
|
||
+srcdir=.
|
||
+INSTALL="/usr/bin/install -c"
|
||
+# If no file are specified by the user, then we need to provide default
|
||
+# value. By we need to know if files were specified by the user.
|
||
+ac_need_defaults=:
|
||
+while test $# != 0
|
||
+do
|
||
+ case $1 in
|
||
+ --*=*)
|
||
+ ac_option=`expr "x$1" : 'x\([^=]*\)='`
|
||
+ ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
|
||
+ ac_shift=:
|
||
+ ;;
|
||
+ -*)
|
||
+ ac_option=$1
|
||
+ ac_optarg=$2
|
||
+ ac_shift=shift
|
||
+ ;;
|
||
+ *) # This is not an option, so the user has probably given explicit
|
||
+ # arguments.
|
||
+ ac_option=$1
|
||
+ ac_need_defaults=false;;
|
||
+ esac
|
||
+
|
||
+ case $ac_option in
|
||
+ # Handling of the options.
|
||
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
|
||
+ ac_cs_recheck=: ;;
|
||
+ --version | --vers* | -V )
|
||
+ echo "$ac_cs_version"; exit 0 ;;
|
||
+ --he | --h)
|
||
+ # Conflict between --help and --header
|
||
+ { { echo "$as_me:$LINENO: error: ambiguous option: $1
|
||
+Try \`$0 --help' for more information." >&5
|
||
+echo "$as_me: error: ambiguous option: $1
|
||
+Try \`$0 --help' for more information." >&2;}
|
||
+ { (exit 1); exit 1; }; };;
|
||
+ --help | --hel | -h )
|
||
+ echo "$ac_cs_usage"; exit 0 ;;
|
||
+ --debug | --d* | -d )
|
||
+ debug=: ;;
|
||
+ --file | --fil | --fi | --f )
|
||
+ $ac_shift
|
||
+ CONFIG_FILES="$CONFIG_FILES $ac_optarg"
|
||
+ ac_need_defaults=false;;
|
||
+ --header | --heade | --head | --hea )
|
||
+ $ac_shift
|
||
+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
|
||
+ ac_need_defaults=false;;
|
||
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
|
||
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
|
||
+ ac_cs_silent=: ;;
|
||
+
|
||
+ # This is an error.
|
||
+ -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
|
||
+Try \`$0 --help' for more information." >&5
|
||
+echo "$as_me: error: unrecognized option: $1
|
||
+Try \`$0 --help' for more information." >&2;}
|
||
+ { (exit 1); exit 1; }; } ;;
|
||
+
|
||
+ *) ac_config_targets="$ac_config_targets $1" ;;
|
||
+
|
||
+ esac
|
||
+ shift
|
||
+done
|
||
+
|
||
+ac_configure_extra_args=
|
||
+
|
||
+if $ac_cs_silent; then
|
||
+ exec 6>/dev/null
|
||
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
|
||
+fi
|
||
+
|
||
+if $ac_cs_recheck; then
|
||
+ echo "running /bin/sh ./configure " $ac_configure_extra_args " --no-create --no-recursion" >&6
|
||
+ exec /bin/sh ./configure $ac_configure_extra_args --no-create --no-recursion
|
||
+fi
|
||
+
|
||
+for ac_config_target in $ac_config_targets
|
||
+do
|
||
+ case "$ac_config_target" in
|
||
+ # Handling of arguments.
|
||
+ "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
|
||
+ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
|
||
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
|
||
+ { (exit 1); exit 1; }; };;
|
||
+ esac
|
||
+done
|
||
+
|
||
+# If the user did not use the arguments to specify the items to instantiate,
|
||
+# then the envvar interface is used. Set only those that are not.
|
||
+# We use the long form for the default assignment because of an extremely
|
||
+# bizarre bug on SunOS 4.1.3.
|
||
+if $ac_need_defaults; then
|
||
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
|
||
+fi
|
||
+
|
||
+# Have a temporary directory for convenience. Make it in the build tree
|
||
+# simply because there is no reason to put it here, and in addition,
|
||
+# creating and moving files from /tmp can sometimes cause problems.
|
||
+# Create a temporary directory, and hook for its removal unless debugging.
|
||
+$debug ||
|
||
+{
|
||
+ trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
|
||
+ trap '{ (exit 1); exit 1; }' 1 2 13 15
|
||
+}
|
||
+
|
||
+# Create a (secure) tmp directory for tmp files.
|
||
+
|
||
+{
|
||
+ tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
|
||
+ test -n "$tmp" && test -d "$tmp"
|
||
+} ||
|
||
+{
|
||
+ tmp=./confstat$$-$RANDOM
|
||
+ (umask 077 && mkdir $tmp)
|
||
+} ||
|
||
+{
|
||
+ echo "$me: cannot create a temporary directory in ." >&2
|
||
+ { (exit 1); exit 1; }
|
||
+}
|
||
+
|
||
+
|
||
+#
|
||
+# CONFIG_FILES section.
|
||
+#
|
||
+
|
||
+# No need to generate the scripts if there are no CONFIG_FILES.
|
||
+# This happens for instance when ./config.status config.h
|
||
+if test -n "$CONFIG_FILES"; then
|
||
+ # Protect against being on the right side of a sed subst in config.status.
|
||
+ sed 's/,@/@@/; s/@,/@@/; s/,;t t$/@;t t/; /@;t t$/s/[\\&,]/\\&/g;
|
||
+ s/@@/,@/; s/@@/@,/; s/@;t t$/,;t t/' >$tmp/subs.sed <<\CEOF
|
||
+s,@SHELL@,/bin/sh,;t t
|
||
+s,@PATH_SEPARATOR@,:,;t t
|
||
+s,@PACKAGE_NAME@,,;t t
|
||
+s,@PACKAGE_TARNAME@,,;t t
|
||
+s,@PACKAGE_VERSION@,,;t t
|
||
+s,@PACKAGE_STRING@,,;t t
|
||
+s,@PACKAGE_BUGREPORT@,,;t t
|
||
+s,@exec_prefix@,${prefix},;t t
|
||
+s,@prefix@,/usr/local,;t t
|
||
+s,@program_transform_name@,s,x,x,,;t t
|
||
+s,@bindir@,${exec_prefix}/bin,;t t
|
||
+s,@sbindir@,${exec_prefix}/sbin,;t t
|
||
+s,@libexecdir@,${exec_prefix}/libexec,;t t
|
||
+s,@datadir@,${prefix}/share,;t t
|
||
+s,@sysconfdir@,${prefix}/etc,;t t
|
||
+s,@sharedstatedir@,${prefix}/com,;t t
|
||
+s,@localstatedir@,${prefix}/var,;t t
|
||
+s,@libdir@,${exec_prefix}/lib,;t t
|
||
+s,@includedir@,${prefix}/include,;t t
|
||
+s,@oldincludedir@,/usr/include,;t t
|
||
+s,@infodir@,${prefix}/info,;t t
|
||
+s,@mandir@,${prefix}/man,;t t
|
||
+s,@build_alias@,,;t t
|
||
+s,@host_alias@,,;t t
|
||
+s,@target_alias@,,;t t
|
||
+s,@DEFS@,-DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DYYTEXT_POINTER=1 -DHAVE_GETADDRINFO=1 -DHAVE_GETNAMEINFO=1 -DHAVE_GETIFADDRS=1 -DHAVE_IF_NAMETOINDEX=1 -DHAVE_DAEMON=1 -DHAVE_WARNX=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYSLOG_H=1 -DHAVE_UNISTD_H=1 -DHAVE_IFADDRS_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_STRUCT_TM_TM_ZONE=1 -DHAVE_TM_ZONE=1 -DHAVE_SIG_ATOMIC_T=1 -DGETPGRP_VOID=1 -DSETPGRP_VOID=1 -DRETSIGTYPE=void -DHAVE_MKTIME=1 -DHAVE_SELECT=1 -DHAVE_SOCKET=1 -DHAVE_ANSI_FUNC=1 -DHAVE_TAILQ_FOREACH_REVERSE_OLD=1 -DHAVE_STDARG_H=1 ,;t t
|
||
+s,@ECHO_C@,,;t t
|
||
+s,@ECHO_N@,-n,;t t
|
||
+s,@ECHO_T@,,;t t
|
||
+s,@LIBS@,,;t t
|
||
+s,@INSTALL_PROGRAM@,${INSTALL},;t t
|
||
+s,@INSTALL_SCRIPT@,${INSTALL},;t t
|
||
+s,@INSTALL_DATA@,${INSTALL} -m 644,;t t
|
||
+s,@SET_MAKE@,,;t t
|
||
+s,@CC@,gcc,;t t
|
||
+s,@CFLAGS@,-g -O2 -I$(srcdir),;t t
|
||
+s,@LDFLAGS@,,;t t
|
||
+s,@CPPFLAGS@,,;t t
|
||
+s,@ac_ct_CC@,gcc,;t t
|
||
+s,@EXEEXT@,,;t t
|
||
+s,@OBJEXT@,o,;t t
|
||
+s,@CPP@,gcc -E,;t t
|
||
+s,@YACC@,bison -y,;t t
|
||
+s,@LEX@,flex,;t t
|
||
+s,@LEXLIB@,-lfl,;t t
|
||
+s,@LEX_OUTPUT_ROOT@,lex.yy,;t t
|
||
+s,@EGREP@,grep -E,;t t
|
||
+s,@LIBOBJS@, strlcpy$U.o strlcat$U.o arc4random$U.o,;t t
|
||
+s,@localdbdir@,/var/db,;t t
|
||
+s,@user@,bin,;t t
|
||
+s,@group@,bin,;t t
|
||
+s,@LTLIBOBJS@, strlcpy$U.lo strlcat$U.lo arc4random$U.lo,;t t
|
||
+CEOF
|
||
+
|
||
+ # Split the substitutions into bite-sized pieces for seds with
|
||
+ # small command number limits, like on Digital OSF/1 and HP-UX.
|
||
+ ac_max_sed_lines=48
|
||
+ ac_sed_frag=1 # Number of current file.
|
||
+ ac_beg=1 # First line for current file.
|
||
+ ac_end=$ac_max_sed_lines # Line after last line for current file.
|
||
+ ac_more_lines=:
|
||
+ ac_sed_cmds=
|
||
+ while $ac_more_lines; do
|
||
+ if test $ac_beg -gt 1; then
|
||
+ sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
|
||
+ else
|
||
+ sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
|
||
+ fi
|
||
+ if test ! -s $tmp/subs.frag; then
|
||
+ ac_more_lines=false
|
||
+ else
|
||
+ # The purpose of the label and of the branching condition is to
|
||
+ # speed up the sed processing (if there are no `@' at all, there
|
||
+ # is no need to browse any of the substitutions).
|
||
+ # These are the two extra sed commands mentioned above.
|
||
+ (echo ':t
|
||
+ /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
|
||
+ if test -z "$ac_sed_cmds"; then
|
||
+ ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
|
||
+ else
|
||
+ ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
|
||
+ fi
|
||
+ ac_sed_frag=`expr $ac_sed_frag + 1`
|
||
+ ac_beg=$ac_end
|
||
+ ac_end=`expr $ac_end + $ac_max_sed_lines`
|
||
+ fi
|
||
+ done
|
||
+ if test -z "$ac_sed_cmds"; then
|
||
+ ac_sed_cmds=cat
|
||
+ fi
|
||
+fi # test -n "$CONFIG_FILES"
|
||
+
|
||
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
|
||
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
|
||
+ case $ac_file in
|
||
+ - | *:- | *:-:* ) # input from stdin
|
||
+ cat >$tmp/stdin
|
||
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
|
||
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
|
||
+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
|
||
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
|
||
+ * ) ac_file_in=$ac_file.in ;;
|
||
+ esac
|
||
+
|
||
+ # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
|
||
+ ac_dir=`(dirname "$ac_file") 2>/dev/null ||
|
||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
|
||
+ X"$ac_file" : 'X\(//\)[^/]' \| \
|
||
+ X"$ac_file" : 'X\(//\)$' \| \
|
||
+ X"$ac_file" : 'X\(/\)' \| \
|
||
+ . : '\(.\)' 2>/dev/null ||
|
||
+echo X"$ac_file" |
|
||
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
|
||
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
|
||
+ /^X\(\/\/\)$/{ s//\1/; q; }
|
||
+ /^X\(\/\).*/{ s//\1/; q; }
|
||
+ s/.*/./; q'`
|
||
+ { if $as_mkdir_p; then
|
||
+ mkdir -p "$ac_dir"
|
||
+ else
|
||
+ as_dir="$ac_dir"
|
||
+ as_dirs=
|
||
+ while test ! -d "$as_dir"; do
|
||
+ as_dirs="$as_dir $as_dirs"
|
||
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
|
||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
|
||
+ X"$as_dir" : 'X\(//\)[^/]' \| \
|
||
+ X"$as_dir" : 'X\(//\)$' \| \
|
||
+ X"$as_dir" : 'X\(/\)' \| \
|
||
+ . : '\(.\)' 2>/dev/null ||
|
||
+echo X"$as_dir" |
|
||
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
|
||
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
|
||
+ /^X\(\/\/\)$/{ s//\1/; q; }
|
||
+ /^X\(\/\).*/{ s//\1/; q; }
|
||
+ s/.*/./; q'`
|
||
+ done
|
||
+ test ! -n "$as_dirs" || mkdir $as_dirs
|
||
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
|
||
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
|
||
+ { (exit 1); exit 1; }; }; }
|
||
+
|
||
+ ac_builddir=.
|
||
+
|
||
+if test "$ac_dir" != .; then
|
||
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
|
||
+ # A "../" for each directory in $ac_dir_suffix.
|
||
+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
|
||
+else
|
||
+ ac_dir_suffix= ac_top_builddir=
|
||
+fi
|
||
+
|
||
+case $srcdir in
|
||
+ .) # No --srcdir option. We are building in place.
|
||
+ ac_srcdir=.
|
||
+ if test -z "$ac_top_builddir"; then
|
||
+ ac_top_srcdir=.
|
||
+ else
|
||
+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
|
||
+ fi ;;
|
||
+ [\\/]* | ?:[\\/]* ) # Absolute path.
|
||
+ ac_srcdir=$srcdir$ac_dir_suffix;
|
||
+ ac_top_srcdir=$srcdir ;;
|
||
+ *) # Relative path.
|
||
+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
|
||
+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
|
||
+esac
|
||
+
|
||
+# Do not use `cd foo && pwd` to compute absolute paths, because
|
||
+# the directories may not exist.
|
||
+case `pwd` in
|
||
+.) ac_abs_builddir="$ac_dir";;
|
||
+*)
|
||
+ case "$ac_dir" in
|
||
+ .) ac_abs_builddir=`pwd`;;
|
||
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
|
||
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
|
||
+ esac;;
|
||
+esac
|
||
+case $ac_abs_builddir in
|
||
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
|
||
+*)
|
||
+ case ${ac_top_builddir}. in
|
||
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
|
||
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
|
||
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
|
||
+ esac;;
|
||
+esac
|
||
+case $ac_abs_builddir in
|
||
+.) ac_abs_srcdir=$ac_srcdir;;
|
||
+*)
|
||
+ case $ac_srcdir in
|
||
+ .) ac_abs_srcdir=$ac_abs_builddir;;
|
||
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
|
||
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
|
||
+ esac;;
|
||
+esac
|
||
+case $ac_abs_builddir in
|
||
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
|
||
+*)
|
||
+ case $ac_top_srcdir in
|
||
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
|
||
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
|
||
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
|
||
+ esac;;
|
||
+esac
|
||
+
|
||
+
|
||
+ case $INSTALL in
|
||
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
|
||
+ *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
|
||
+ esac
|
||
+
|
||
+ if test x"$ac_file" != x-; then
|
||
+ { echo "$as_me:$LINENO: creating $ac_file" >&5
|
||
+echo "$as_me: creating $ac_file" >&6;}
|
||
+ rm -f "$ac_file"
|
||
+ fi
|
||
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
|
||
+ # use $as_me), people would be surprised to read:
|
||
+ # /* config.h. Generated by config.status. */
|
||
+ if test x"$ac_file" = x-; then
|
||
+ configure_input=
|
||
+ else
|
||
+ configure_input="$ac_file. "
|
||
+ fi
|
||
+ configure_input=$configure_input"Generated from `echo $ac_file_in |
|
||
+ sed 's,.*/,,'` by configure."
|
||
+
|
||
+ # First look for the input files in the build tree, otherwise in the
|
||
+ # src tree.
|
||
+ ac_file_inputs=`IFS=:
|
||
+ for f in $ac_file_in; do
|
||
+ case $f in
|
||
+ -) echo $tmp/stdin ;;
|
||
+ [\\/$]*)
|
||
+ # Absolute (can't be DOS-style, as IFS=:)
|
||
+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
|
||
+echo "$as_me: error: cannot find input file: $f" >&2;}
|
||
+ { (exit 1); exit 1; }; }
|
||
+ echo "$f";;
|
||
+ *) # Relative
|
||
+ if test -f "$f"; then
|
||
+ # Build tree
|
||
+ echo "$f"
|
||
+ elif test -f "$srcdir/$f"; then
|
||
+ # Source tree
|
||
+ echo "$srcdir/$f"
|
||
+ else
|
||
+ # /dev/null tree
|
||
+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
|
||
+echo "$as_me: error: cannot find input file: $f" >&2;}
|
||
+ { (exit 1); exit 1; }; }
|
||
+ fi;;
|
||
+ esac
|
||
+ done` || { (exit 1); exit 1; }
|
||
+ sed "/^[ ]*VPATH[ ]*=/{
|
||
+s/:*\$(srcdir):*/:/;
|
||
+s/:*\${srcdir}:*/:/;
|
||
+s/:*@srcdir@:*/:/;
|
||
+s/^\([^=]*=[ ]*\):*/\1/;
|
||
+s/:*$//;
|
||
+s/^[^=]*=[ ]*$//;
|
||
+}
|
||
+
|
||
+:t
|
||
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
|
||
+s,@configure_input@,$configure_input,;t t
|
||
+s,@srcdir@,$ac_srcdir,;t t
|
||
+s,@abs_srcdir@,$ac_abs_srcdir,;t t
|
||
+s,@top_srcdir@,$ac_top_srcdir,;t t
|
||
+s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
|
||
+s,@builddir@,$ac_builddir,;t t
|
||
+s,@abs_builddir@,$ac_abs_builddir,;t t
|
||
+s,@top_builddir@,$ac_top_builddir,;t t
|
||
+s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
|
||
+s,@INSTALL@,$ac_INSTALL,;t t
|
||
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
|
||
+ rm -f $tmp/stdin
|
||
+ if test x"$ac_file" != x-; then
|
||
+ mv $tmp/out $ac_file
|
||
+ else
|
||
+ cat $tmp/out
|
||
+ rm -f $tmp/out
|
||
+ fi
|
||
+
|
||
+done
|
||
+
|
||
+{ (exit 0); exit 0; }
|
||
diff -Naur wide-dhcpv6-20080615.orig/debug.h wide-dhcpv6-20080615/debug.h
|
||
--- wide-dhcpv6-20080615.orig/debug.h 1970-01-01 08:00:00.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/debug.h 2014-01-24 14:07:41.000000000 +0800
|
||
@@ -0,0 +1,13 @@
|
||
+#ifndef MY_DEBUG_H_
|
||
+#define MY_DEBUG_H_
|
||
+
|
||
+/* First include stdio.h, which may contain the prototype for the external dprintf.
|
||
+ * We do not want that. We redefine dprintf to our local implementation. */
|
||
+#include <stdio.h>
|
||
+#define dprintf my_dprintf
|
||
+#ifndef __P
|
||
+# define __P(x) x
|
||
+#endif
|
||
+extern void my_dprintf __P((int, const char *, const char *, ...));
|
||
+
|
||
+#endif /* MY_DEBUG_H_ */
|
||
diff -Naur wide-dhcpv6-20080615.orig/dhcp6c.c wide-dhcpv6-20080615/dhcp6c.c
|
||
--- wide-dhcpv6-20080615.orig/dhcp6c.c 2008-06-15 15:48:41.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/dhcp6c.c 2014-01-28 20:23:46.609177888 +0800
|
||
@@ -1,4 +1,3 @@
|
||
-/* $KAME: dhcp6c.c,v 1.164 2006/01/10 02:46:09 jinmei Exp $ */
|
||
/*
|
||
* Copyright (C) 1998 and 1999 WIDE Project.
|
||
* All rights reserved.
|
||
@@ -79,6 +78,17 @@
|
||
#include <prefixconf.h>
|
||
#include <auth.h>
|
||
|
||
+/*zyxel*/
|
||
+#include "zcfg_common.h"
|
||
+#include "zcfg_fe_rdm_access.h"
|
||
+#include "zcfg_msg.h"
|
||
+
|
||
+#include <json/json.h>
|
||
+
|
||
+extern struct json_object *dhcp6cMsg;
|
||
+extern zcfgRet_t dhcp6MsgSend(int, int, const char *);
|
||
+/*end*/
|
||
+
|
||
static int debug = 0;
|
||
static int exit_ok = 0;
|
||
static sig_atomic_t sig_flags = 0;
|
||
@@ -211,6 +221,7 @@
|
||
setloglevel(debug);
|
||
|
||
client6_init();
|
||
+dprintf(LOG_ERR, FNAME, "bp1 ");
|
||
while (argc-- > 0) {
|
||
if ((ifp = ifinit(argv[0])) == NULL) {
|
||
dprintf(LOG_ERR, FNAME, "failed to initialize %s",
|
||
@@ -219,25 +230,26 @@
|
||
}
|
||
argv++;
|
||
}
|
||
-
|
||
+dprintf(LOG_ERR, FNAME, "bp2 ");
|
||
if (infreq_mode == 0 && (cfparse(conffile)) != 0) {
|
||
dprintf(LOG_ERR, FNAME, "failed to parse configuration file");
|
||
exit(1);
|
||
}
|
||
-
|
||
+dprintf(LOG_ERR, FNAME, "bp3 ");
|
||
if (foreground == 0 && infreq_mode == 0) {
|
||
if (daemon(0, 0) < 0)
|
||
err(1, "daemon");
|
||
}
|
||
-
|
||
+dprintf(LOG_ERR, FNAME, "bp4 ");
|
||
/* dump current PID */
|
||
pid = getpid();
|
||
if ((pidfp = fopen(pid_file, "w")) != NULL) {
|
||
fprintf(pidfp, "%d\n", pid);
|
||
fclose(pidfp);
|
||
}
|
||
-
|
||
+dprintf(LOG_ERR, FNAME, "bp5 ");
|
||
client6_startall(0);
|
||
+dprintf(LOG_ERR, FNAME, "bp6 ");
|
||
client6_mainloop();
|
||
exit(0);
|
||
}
|
||
@@ -384,6 +396,7 @@
|
||
client6_start(ifp)
|
||
struct dhcp6_if *ifp;
|
||
{
|
||
+dprintf(LOG_ERR, FNAME, "client6_start");
|
||
struct dhcp6_event *ev;
|
||
|
||
/* make sure that the interface does not have a timer */
|
||
@@ -423,6 +436,7 @@
|
||
client6_startall(isrestart)
|
||
int isrestart;
|
||
{
|
||
+dprintf(LOG_ERR, FNAME, "client6_startall");
|
||
struct dhcp6_if *ifp;
|
||
|
||
for (ifp = dhcp6_if; ifp; ifp = ifp->next) {
|
||
@@ -510,10 +524,13 @@
|
||
static void
|
||
client6_mainloop()
|
||
{
|
||
+dprintf(LOG_ERR, FNAME, "client6_mainloop");
|
||
struct timeval *w;
|
||
int ret, maxsock;
|
||
fd_set r;
|
||
|
||
+ zcfgEidInit(ZCFG_EID_UDHCP6C, "dhcp6c");
|
||
+
|
||
while(1) {
|
||
if (sig_flags)
|
||
process_signals();
|
||
@@ -585,6 +602,7 @@
|
||
char *ifbuf;
|
||
int ifbuflen;
|
||
{
|
||
+dprintf(LOG_ERR, FNAME, "get_ifname");
|
||
char *bp = *bpp;
|
||
int len = *lenp, ifnamelen;
|
||
u_int32_t i32;
|
||
@@ -612,6 +630,7 @@
|
||
char *buf;
|
||
ssize_t len;
|
||
{
|
||
+dprintf(LOG_ERR, FNAME, "client6_do_ctlcommand");
|
||
struct dhcp6ctl *ctlhead;
|
||
u_int16_t command, version;
|
||
u_int32_t p32, ts, ts0;
|
||
@@ -732,6 +751,7 @@
|
||
static void
|
||
client6_reload()
|
||
{
|
||
+dprintf(LOG_ERR, FNAME, "client6_reload");
|
||
/* reload the configuration file */
|
||
if (cfparse(conffile) != 0) {
|
||
dprintf(LOG_WARNING, FNAME,
|
||
@@ -749,6 +769,7 @@
|
||
char *ifname;
|
||
u_int16_t command;
|
||
{
|
||
+dprintf(LOG_ERR, FNAME, "client6_ifctl");
|
||
struct dhcp6_if *ifp;
|
||
|
||
if ((ifp = find_ifconfbyname(ifname)) == NULL) {
|
||
@@ -1147,6 +1168,7 @@
|
||
client6_send(ev)
|
||
struct dhcp6_event *ev;
|
||
{
|
||
+dprintf(LOG_ERR, FNAME, "client6_send");
|
||
struct dhcp6_if *ifp;
|
||
char buf[BUFSIZ];
|
||
struct sockaddr_in6 dst;
|
||
@@ -1388,6 +1410,7 @@
|
||
static void
|
||
client6_recv()
|
||
{
|
||
+dprintf(LOG_ERR, FNAME, "client6_recv");
|
||
char rbuf[BUFSIZ], cmsgbuf[BUFSIZ];
|
||
struct msghdr mhdr;
|
||
struct iovec iov;
|
||
@@ -1481,6 +1504,7 @@
|
||
ssize_t len;
|
||
struct dhcp6_optinfo *optinfo;
|
||
{
|
||
+dprintf(LOG_ERR, FNAME, "client6_recvadvert");
|
||
struct dhcp6_serverinfo *newserver, **sp;
|
||
struct dhcp6_event *ev;
|
||
struct dhcp6_eventdata *evd;
|
||
@@ -1702,6 +1726,10 @@
|
||
struct dhcp6_listval *lv;
|
||
struct dhcp6_event *ev;
|
||
int state;
|
||
+/*zyxel*/
|
||
+ char *msg = NULL;
|
||
+ int msgLen = 0;
|
||
+/*end*/
|
||
|
||
/* find the corresponding event based on the received xid */
|
||
ev = find_event_withid(ifp, ntohl(dh6->dh6_xid) & DH6_XIDMASK);
|
||
@@ -1761,6 +1789,9 @@
|
||
return (-1);
|
||
}
|
||
|
||
+ /*zyxel*/
|
||
+ dhcp6cMsg = json_object_new_object();
|
||
+
|
||
/*
|
||
* The client MAY choose to report any status code or message from the
|
||
* status code option in the Reply message.
|
||
@@ -1794,6 +1825,9 @@
|
||
}
|
||
}
|
||
|
||
+ /*zyxel*/
|
||
+ dhcp6sConfDnsListUpdate(optinfo);
|
||
+
|
||
if (!TAILQ_EMPTY(&optinfo->ntp_list)) {
|
||
struct dhcp6_listval *d;
|
||
int i = 0;
|
||
@@ -1888,6 +1922,14 @@
|
||
&optinfo->serverID, ev->authparam);
|
||
}
|
||
|
||
+ //dprintf(LOG_ERR, FNAME, "json : %s\n", json_object_to_json_string(dhcp6cMsg));
|
||
+ json_object_object_add(dhcp6cMsg, "pidfile", json_object_new_string(pid_file)); //add pid_file information
|
||
+ msg = json_object_to_json_string(dhcp6cMsg);
|
||
+ msgLen = strlen(msg) + 1;
|
||
+
|
||
+ dhcp6MsgSend(ZCFG_MSG_DHCP6C_STATE_CHANGED, msgLen, msg);
|
||
+ json_object_put(dhcp6cMsg);
|
||
+
|
||
dhcp6_remove_event(ev);
|
||
|
||
if (state == DHCP6S_RELEASE) {
|
||
@@ -2146,3 +2188,61 @@
|
||
|
||
return;
|
||
}
|
||
+
|
||
+/*zyxel*/
|
||
+int dhcp6sConfDnsListUpdate(struct dhcp6_optinfo *opt)
|
||
+{
|
||
+ struct dhcp6_listval *d;
|
||
+ char nameserver[128] = {0};
|
||
+ char domainName[64] = {0};
|
||
+
|
||
+ dprintf(LOG_ERR, FNAME, "%s : Enter\n", __FUNCTION__);
|
||
+
|
||
+ d = TAILQ_FIRST(&opt->dns_list);
|
||
+ if(d != NULL) {
|
||
+ sprintf(nameserver, "%s", in6addr2str(&d->val_addr6, 0));
|
||
+
|
||
+ d = TAILQ_NEXT(d, link);
|
||
+ if (d != NULL) {
|
||
+ strcat(nameserver, ",");
|
||
+ strcat(nameserver, in6addr2str(&d->val_addr6, 0));
|
||
+ }
|
||
+ }
|
||
+
|
||
+ d = TAILQ_FIRST(&opt->dnsname_list);
|
||
+ if(d != NULL) {
|
||
+ sprintf(domainName, "%s", d->val_vbuf.dv_buf);
|
||
+
|
||
+ /*
|
||
+ * FIXME: last character in domainName is always '.'
|
||
+ * Solution: always set to '\0', but better to figure out why!
|
||
+ */
|
||
+ if (strlen(domainName) > 0) domainName[strlen(domainName)-1]='\0';
|
||
+ }
|
||
+
|
||
+ addDnsInfoToMsg(nameserver, domainName);
|
||
+
|
||
+ return 0;
|
||
+}
|
||
+
|
||
+void addDnsInfoToMsg(const char *nameserver, const char *domainName)
|
||
+{
|
||
+ if(nameserver && nameserver[0] != '\0') {
|
||
+#if 0
|
||
+ dhcp6cMsgBody.dnsAssigned = TRUE;
|
||
+ strcpy(dhcp6cMsgBody.nameserver, nameserver);
|
||
+#endif
|
||
+ json_object_object_add(dhcp6cMsg, "nameserver", json_object_new_string(nameserver));
|
||
+ }
|
||
+
|
||
+ if(domainName && domainName[0] != '\0') {
|
||
+#if 0
|
||
+ dhcp6cMsgBody.domainNameAssigned = TRUE;
|
||
+ strcpy(dhcp6cMsgBody.domainName, domainName);
|
||
+#endif
|
||
+ json_object_object_add(dhcp6cMsg, "domainName", json_object_new_string(domainName));
|
||
+ }
|
||
+
|
||
+ return;
|
||
+}
|
||
+/*end*/
|
||
diff -Naur wide-dhcpv6-20080615.orig/dhcp6s.conf.sample wide-dhcpv6-20080615/dhcp6s.conf.sample
|
||
--- wide-dhcpv6-20080615.orig/dhcp6s.conf.sample 2011-08-01 17:24:00.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/dhcp6s.conf.sample 2013-12-30 16:11:43.000000000 +0800
|
||
@@ -4,10 +4,10 @@
|
||
|
||
option domain-name-servers 2001:db8::35;
|
||
|
||
-#host kame {
|
||
-# duid 00:01:00:01:aa:bb;
|
||
-# prefix 2001:db8:1111::/48 infinity;
|
||
-#};
|
||
+host kame {
|
||
+ duid 00:01:00:01:aa:bb;
|
||
+ prefix 2001:db8:1111::/48 infinity;
|
||
+};
|
||
|
||
# The followings are a sample configuration to provide an IPv6 address
|
||
# from an address pool 2001:db8:1:2::1000-2000 for 3600[s].
|
||
@@ -16,7 +16,7 @@
|
||
# stateless address configuration via RA, please set the autonomous-flag to
|
||
# OFF in your RA configuration.
|
||
|
||
-interface lan {
|
||
+interface fxp0 {
|
||
address-pool pool1 3600;
|
||
};
|
||
|
||
diff -Naur wide-dhcpv6-20080615.orig/ifaddrs.h wide-dhcpv6-20080615/ifaddrs.h
|
||
--- wide-dhcpv6-20080615.orig/ifaddrs.h 1970-01-01 08:00:00.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/ifaddrs.h 2014-01-28 19:36:06.000000000 +0800
|
||
@@ -0,0 +1,45 @@
|
||
+/*
|
||
+ * Copyright (c) 2006 WIDE Project. All rights reserved.
|
||
+ *
|
||
+ * Redistribution and use in source and binary forms, with or without
|
||
+ * modification, are permitted provided that the following conditions
|
||
+ * are met:
|
||
+ * 1. Redistributions of source code must retain the above copyright
|
||
+ * notice, this list of conditions and the following disclaimer.
|
||
+ * 2. Redistributions in binary form must reproduce the above copyright
|
||
+ * notice, this list of conditions and the following disclaimer in the
|
||
+ * documentation and/or other materials provided with the distribution.
|
||
+ * 3. Neither the name of the project nor the names of its contributors
|
||
+ * may be used to endorse or promote products derived from this software
|
||
+ * without specific prior written permission.
|
||
+ *
|
||
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
|
||
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
|
||
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||
+ * SUCH DAMAGE.
|
||
+ */
|
||
+
|
||
+#include <sys/types.h>
|
||
+#include <stdint.h>
|
||
+
|
||
+#undef ifa_broadaddr
|
||
+#undef ifa_dstaddr
|
||
+struct ifaddrs {
|
||
+ struct ifaddrs *ifa_next; /* Pointer to next struct */
|
||
+ char *ifa_name; /* Interface name */
|
||
+ uint64_t ifa_flags; /* Interface flags */
|
||
+ struct sockaddr *ifa_addr; /* Interface address */
|
||
+ struct sockaddr *ifa_netmask; /* Interface netmask */
|
||
+ struct sockaddr *ifa_dstaddr; /* P2P interface destination */
|
||
+};
|
||
+#define ifa_broadaddr ifa_dstaddr
|
||
+
|
||
+extern int getifaddrs(struct ifaddrs **);
|
||
+extern void freeifaddrs(struct ifaddrs *);
|
||
diff -Naur wide-dhcpv6-20080615.orig/if.c wide-dhcpv6-20080615/if.c
|
||
--- wide-dhcpv6-20080615.orig/if.c 2008-06-15 15:48:43.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/if.c 2014-01-28 20:53:13.746054627 +0800
|
||
@@ -57,6 +57,7 @@
|
||
ifinit(ifname)
|
||
char *ifname;
|
||
{
|
||
+dprintf(LOG_ERR, FNAME, "ifinit: %s", ifname);
|
||
struct dhcp6_if *ifp;
|
||
|
||
if ((ifp = find_ifconfbyname(ifname)) != NULL) {
|
||
@@ -77,8 +78,10 @@
|
||
goto fail;
|
||
}
|
||
|
||
- if (ifreset(ifp))
|
||
+ if (ifreset(ifp)){
|
||
goto fail;
|
||
+ dprintf(LOG_NOTICE, FNAME, "ifreset");
|
||
+ }
|
||
|
||
TAILQ_INIT(&ifp->reqopt_list);
|
||
TAILQ_INIT(&ifp->iaconf_list);
|
||
@@ -92,6 +95,7 @@
|
||
struct sockaddr_in6 *sin6;
|
||
|
||
if (getifaddrs(&ifap) < 0) {
|
||
+dprintf(LOG_NOTICE, FNAME, "getifaddrs");
|
||
dprintf(LOG_ERR, FNAME, "getifaddrs failed: %s",
|
||
strerror(errno));
|
||
goto fail;
|
||
@@ -121,7 +125,9 @@
|
||
|
||
fail:
|
||
if (ifp->ifname != NULL)
|
||
+dprintf(LOG_NOTICE, FNAME, "fail: ifp->name: %s", ifp->ifname);
|
||
free(ifp->ifname);
|
||
+dprintf(LOG_NOTICE, FNAME, "fail: ifp->name: %s", ifp->ifname);
|
||
free(ifp);
|
||
return (NULL);
|
||
}
|
||
diff -Naur wide-dhcpv6-20080615.orig/Makefile.in wide-dhcpv6-20080615/Makefile.in
|
||
--- wide-dhcpv6-20080615.orig/Makefile.in 2007-03-21 17:52:58.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/Makefile.in 2014-01-28 20:06:46.897150916 +0800
|
||
@@ -29,6 +29,19 @@
|
||
# $KAME: Makefile.in,v 1.45 2005/10/16 16:25:38 suz Exp $
|
||
#
|
||
|
||
+ALLOWED_INCLUDE_PATHS = -I. -I..\
|
||
+ -I$(BUILD_DIR)/userspace/public/include \
|
||
+ -I$(BUILD_DIR)/userspace/public/include/linux
|
||
+
|
||
+ALLOWED_INCLUDE_PATHS += -I$(INC_BRCMDRIVER_PUB_PATH)/$(BRCM_BOARD) \
|
||
+ -I$(INC_BRCMDRIVER_PRIV_PATH)/$(BRCM_BOARD) \
|
||
+ -I$(INC_BRCMSHARED_PUB_PATH)/$(BRCM_BOARD)
|
||
+
|
||
+INC_PATH = $(ALLOWED_INCLUDE_PATHS)
|
||
+
|
||
+LIB_PATH = -L$(USRLIBDIR) -L$(INSTALL_DIR)/lib/public -L$(INSTALL_DIR)/lib/private
|
||
+LINK_LIB = -ljson -lzcfg_msg
|
||
+
|
||
prefix= @prefix@
|
||
srcdir= @srcdir@
|
||
sysconfdir= @sysconfdir@
|
||
@@ -37,12 +50,12 @@
|
||
group= @group@
|
||
|
||
CFLAGS= @CFLAGS@ @DEFS@ -DSYSCONFDIR=\"${sysconfdir}\" \
|
||
- -DLOCALDBDIR=\"${localdbdir}\"
|
||
+ -DLOCALDBDIR=\"${localdbdir}\" $(EXTRA_CFLAGS)
|
||
LDFLAGS=@LDFLAGS@
|
||
LIBOBJS=@LIBOBJS@
|
||
LIBS= @LIBS@ @LEXLIB@
|
||
CC= @CC@
|
||
-TARGET= dhcp6c dhcp6s dhcp6relay dhcp6ctl
|
||
+TARGET= dhcp6c dhcp6s
|
||
|
||
INSTALL=@INSTALL@
|
||
INSTALL_PROGRAM=@INSTALL_PROGRAM@
|
||
@@ -65,13 +78,13 @@
|
||
|
||
all: $(TARGET)
|
||
dhcp6c: $(CLIENTOBJS) $(LIBOBJS)
|
||
- $(CC) $(LDFLAGS) -o dhcp6c $(CLIENTOBJS) $(LIBOBJS) $(LIBS)
|
||
+ $(CC) $(LDFLAGS) -o dhcp6c $(INC_PATH) $(LIB_PATH) $(LINK_LIB) $(CLIENTOBJS) $(LIBOBJS) $(LIBS)
|
||
dhcp6s: $(SERVOBJS) $(LIBOBJS)
|
||
- $(CC) $(LDFLAGS) -o dhcp6s $(SERVOBJS) $(LIBOBJS) $(LIBS)
|
||
+ $(CC) $(LDFLAGS) -o dhcp6s $(INC_PATH) $(LIB_PATH) $(LINK_LIB) $(SERVOBJS) $(LIBOBJS) $(LIBS)
|
||
dhcp6relay: $(RELAYOBJS) $(LIBOBJS)
|
||
- $(CC) $(LDFLAGS) -o $@ $(RELAYOBJS) $(LIBOBJS) $(LIBS)
|
||
+ $(CC) $(LDFLAGS) -o $@ $(INC_PATH) $(LIB_PATH) $(LINK_LIB) $(RELAYOBJS) $(LIBOBJS) $(LIBS)
|
||
dhcp6ctl: $(CTLOBJS)
|
||
- $(CC) $(LDFLAGS) -o $@ $(CTLOBJS) $(LIBOBJS) $(LIBS)
|
||
+ $(CC) $(LDFLAGS) -o $@ $(INC_PATH) $(LIB_PATH) $(LINK_LIB) $(CTLOBJS) $(LIBOBJS) $(LIBS)
|
||
|
||
cfparse.c y.tab.h: cfparse.y
|
||
@YACC@ -d cfparse.y
|
||
diff -Naur wide-dhcpv6-20080615.orig/missing/getifaddrs.c wide-dhcpv6-20080615/missing/getifaddrs.c
|
||
--- wide-dhcpv6-20080615.orig/missing/getifaddrs.c 2007-03-21 17:52:53.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/missing/getifaddrs.c 2014-02-06 16:23:13.766384119 +0800
|
||
@@ -30,15 +30,97 @@
|
||
#include <stdlib.h>
|
||
#include <errno.h>
|
||
#include <string.h>
|
||
-#include <sys/sockio.h>
|
||
+//#include <sys/sockio.h>
|
||
#include <sys/socket.h>
|
||
#include <net/if.h>
|
||
|
||
+#include <stdint.h>
|
||
+#include <sys/ioctl.h>
|
||
+#include <sys/types.h>
|
||
+#include <sys/stat.h>
|
||
+#include <netinet/in.h>
|
||
+
|
||
#include "ifaddrs.h"
|
||
+#include "sockio.h"
|
||
+
|
||
+/* Used by SIOCGLIFNUM. Uses same flags as in struct lifconf */
|
||
+struct lifnum {
|
||
+ sa_family_t lifn_family;
|
||
+ int lifn_flags; /* request specific interfaces */
|
||
+ int lifn_count; /* Result */
|
||
+};
|
||
+
|
||
+/*
|
||
+ * Structure used in SIOCGLIFCONF request.
|
||
+ * Used to retrieve interface configuration
|
||
+ * for machine (useful for programs which
|
||
+ * must know all networks accessible) for a given address family.
|
||
+ * Using AF_UNSPEC will retrieve all address families.
|
||
+ */
|
||
+struct lifconf {
|
||
+ sa_family_t lifc_family;
|
||
+ int lifc_flags; /* request specific interfaces */
|
||
+ int lifc_len; /* size of associated buffer */
|
||
+ union {
|
||
+ caddr_t lifcu_buf;
|
||
+ struct lifreq *lifcu_req;
|
||
+ } lifc_lifcu;
|
||
+#define lifc_buf lifc_lifcu.lifcu_buf /* buffer address */
|
||
+#define lifc_req lifc_lifcu.lifcu_req /* array of structures returned */
|
||
+};
|
||
+
|
||
+struct lifreq {
|
||
+ char lifr_name[50]; /* if name, e.g. "en0" */
|
||
+ union {
|
||
+ int lifru_addrlen; /* for subnet/token etc */
|
||
+ uint64_t lifru_ppa; /* SIOCSLIFNAME */
|
||
+ } lifr_lifru1;
|
||
+#define lifr_addrlen lifr_lifru1.lifru_addrlen
|
||
+#define lifr_ppa lifr_lifru1.lifru_ppa /* Driver's ppa */
|
||
+ uint64_t lifr_movetoindex; /* FAILOVER/FAILBACK ifindex */
|
||
+ union {
|
||
+ struct sockaddr_storage lifru_addr;
|
||
+ struct sockaddr_storage lifru_dstaddr;
|
||
+ struct sockaddr_storage lifru_broadaddr;
|
||
+ struct sockaddr_storage lifru_token; /* With lifr_addrlen */
|
||
+ struct sockaddr_storage lifru_subnet; /* With lifr_addrlen */
|
||
+ int lifru_index; /* interface index */
|
||
+ uint64_t lifru_flags; /* Flags for SIOC?LIFFLAGS */
|
||
+ int lifru_metric;
|
||
+ uint64_t lifru_mtu;
|
||
+ char lifru_data[1]; /* interface dependent data */
|
||
+ char lifru_enaddr[6];
|
||
+ int lif_muxid[2]; /* mux id's for arp and ip */
|
||
+ //struct lif_nd_req lifru_nd_req;
|
||
+ //struct lif_ifinfo_req lifru_ifinfo_req;
|
||
+ char lifru_groupname[50]; /* SIOC[GS]LIFGROUPNAME */
|
||
+ uint64_t lifru_delay; /* SIOC[GS]LIFNOTIFYDELAY */
|
||
+ } lifr_lifru;
|
||
+
|
||
+#define lifr_addr lifr_lifru.lifru_addr /* address */
|
||
+#define lifr_dstaddr lifr_lifru.lifru_dstaddr /* other end of p-to-p link */
|
||
+#define lifr_broadaddr lifr_lifru.lifru_broadaddr /* broadcast address */
|
||
+#define lifr_token lifr_lifru.lifru_token /* address token */
|
||
+#define lifr_subnet lifr_lifru.lifru_subnet /* subnet prefix */
|
||
+#define lifr_index lifr_lifru.lifru_index /* interface index */
|
||
+#define lifr_flags lifr_lifru.lifru_flags /* flags */
|
||
+#define lifr_metric lifr_lifru.lifru_metric /* metric */
|
||
+#define lifr_mtu lifr_lifru.lifru_mtu /* mtu */
|
||
+#define lifr_data lifr_lifru.lifru_data /* for use by interface */
|
||
+#define lifr_enaddr lifr_lifru.lifru_enaddr /* ethernet address */
|
||
+#define lifr_index lifr_lifru.lifru_index /* interface index */
|
||
+#define lifr_ip_muxid lifr_lifru.lif_muxid[0]
|
||
+#define lifr_arp_muxid lifr_lifru.lif_muxid[1]
|
||
+#define lifr_nd lifr_lifru.lifru_nd_req /* SIOCLIF*ND */
|
||
+#define lifr_ifinfo lifr_lifru.lifru_ifinfo_req /* SIOC[GS]LIFLNKINFO */
|
||
+#define lifr_groupname lifr_lifru.lifru_groupname
|
||
+#define lifr_delay lifr_lifru.lifru_delay
|
||
+};
|
||
|
||
static int
|
||
-get_lifreq(int fd, struct lifreq **ifr_ret)
|
||
+get_lifreq(int fd, struct lifreq **ifr_ret) //question?
|
||
{
|
||
+
|
||
struct lifnum lifn;
|
||
struct lifconf lifc;
|
||
struct lifreq *lifrp;
|
||
@@ -55,7 +137,7 @@
|
||
lifrp = malloc(lifc.lifc_len);
|
||
if (lifrp == NULL)
|
||
return (-1);
|
||
-
|
||
+
|
||
lifc.lifc_family = AF_UNSPEC;
|
||
lifc.lifc_flags = 0;
|
||
lifc.lifc_buf = (char *)lifrp;
|
||
@@ -76,7 +158,6 @@
|
||
(void) close(fd);
|
||
|
||
*ifr_ret = lifrp;
|
||
-
|
||
return (lifc.lifc_len / sizeof (*lifrp));
|
||
}
|
||
|
||
@@ -169,6 +250,7 @@
|
||
|
||
if ((fd4 = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
|
||
return (-1);
|
||
+
|
||
if ((fd6 = socket(AF_INET6, SOCK_DGRAM, 0)) == -1 &&
|
||
errno != EAFNOSUPPORT) {
|
||
(void) close(fd4);
|
||
@@ -176,8 +258,9 @@
|
||
}
|
||
|
||
if ((nif4 = get_lifreq(fd4, &ifr4)) == -1 ||
|
||
- (fd6 != -1 && (nif6 = get_lifreq(fd6, &ifr6)) == -1))
|
||
- goto failure;
|
||
+ (fd6 != -1 && (nif6 = get_lifreq(fd6, &ifr6)) == -1)){
|
||
+ //goto failure;
|
||
+ }
|
||
|
||
if (nif4 == 0 && nif6 == 0) {
|
||
*ifap = NULL;
|
||
@@ -193,6 +276,7 @@
|
||
|
||
if (populate(ifa, fd4, ifr4, nif4, AF_INET, &buf) == -1)
|
||
goto failure;
|
||
+
|
||
if (nif4 > 0 && nif6 > 0)
|
||
ifa[nif4 - 1].ifa_next = ifa + nif4;
|
||
if (populate(ifa + nif4, fd6, ifr6, nif6, AF_INET6, &buf) == -1)
|
||
diff -Naur wide-dhcpv6-20080615.orig/missing/ifaddrs.h wide-dhcpv6-20080615/missing/ifaddrs.h
|
||
--- wide-dhcpv6-20080615.orig/missing/ifaddrs.h 2007-03-21 17:52:53.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/missing/ifaddrs.h 2014-01-28 19:36:06.569102239 +0800
|
||
@@ -27,6 +27,7 @@
|
||
*/
|
||
|
||
#include <sys/types.h>
|
||
+#include <stdint.h>
|
||
|
||
#undef ifa_broadaddr
|
||
#undef ifa_dstaddr
|
||
diff -Naur wide-dhcpv6-20080615.orig/missing/sockio.h wide-dhcpv6-20080615/missing/sockio.h
|
||
--- wide-dhcpv6-20080615.orig/missing/sockio.h 1970-01-01 08:00:00.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/missing/sockio.h 2014-01-22 11:25:21.000000000 +0800
|
||
@@ -0,0 +1,346 @@
|
||
+/*
|
||
+ * CDDL HEADER START
|
||
+ *
|
||
+ * The contents of this file are subject to the terms of the
|
||
+ * Common Development and Distribution License (the "License").
|
||
+ * You may not use this file except in compliance with the License.
|
||
+ *
|
||
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
|
||
+ * or http://www.opensolaris.org/os/licensing.
|
||
+ * See the License for the specific language governing permissions
|
||
+ * and limitations under the License.
|
||
+ *
|
||
+ * When distributing Covered Code, include this CDDL HEADER in each
|
||
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
|
||
+ * If applicable, add the following below this CDDL HEADER, with the
|
||
+ * fields enclosed by brackets "[]" replaced with your own identifying
|
||
+ * information: Portions Copyright [yyyy] [name of copyright owner]
|
||
+ *
|
||
+ * CDDL HEADER END
|
||
+ */
|
||
+/*
|
||
+ * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
|
||
+ * Copyright (c) 2014, OmniTI Computer Consulting, Inc. All rights reserved.
|
||
+ */
|
||
+
|
||
+/* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */
|
||
+/* All Rights Reserved */
|
||
+
|
||
+/*
|
||
+ * University Copyright- Copyright (c) 1982, 1986, 1988
|
||
+ * The Regents of the University of California
|
||
+ * All Rights Reserved
|
||
+ *
|
||
+ * University Acknowledgment- Portions of this document are derived from
|
||
+ * software developed by the University of California, Berkeley, and its
|
||
+ * contributors.
|
||
+ */
|
||
+
|
||
+#ifndef _SYS_SOCKIO_H
|
||
+#define _SYS_SOCKIO_H
|
||
+
|
||
+/*
|
||
+ * General socket ioctl definitions.
|
||
+ */
|
||
+
|
||
+//#include <sys/ioccom.h>
|
||
+
|
||
+#ifdef __cplusplus
|
||
+extern "C" {
|
||
+#endif
|
||
+
|
||
+/* socket i/o controls */
|
||
+#define SIOCSHIWAT _IOW('s', 0, int) /* set high watermark */
|
||
+#define SIOCGHIWAT _IOR('s', 1, int) /* get high watermark */
|
||
+#define SIOCSLOWAT _IOW('s', 2, int) /* set low watermark */
|
||
+#define SIOCGLOWAT _IOR('s', 3, int) /* get low watermark */
|
||
+#define SIOCATMARK _IOR('s', 7, int) /* at oob mark? */
|
||
+#define SIOCSPGRP _IOW('s', 8, int) /* set process group */
|
||
+#define SIOCGPGRP _IOR('s', 9, int) /* get process group */
|
||
+
|
||
+/*
|
||
+ * SIOCADDRT and SIOCDELRT ioctls need to be defined using _IOWN macro to
|
||
+ * make them datamodel independent.
|
||
+ */
|
||
+#define SIOCADDRT _IOWN('r', 10, 48) /* add route */
|
||
+#define SIOCDELRT _IOWN('r', 11, 48) /* delete route */
|
||
+
|
||
+/* For multicast routing. These might change in future release */
|
||
+#define SIOCGETVIFCNT _IOWR('r', 20, struct sioc_vif_req)
|
||
+ /* get vif pkt count */
|
||
+#define SIOCGETSGCNT _IOWR('r', 21, struct sioc_sg_req)
|
||
+ /* get s,g pkt count */
|
||
+#define SIOCGETLSGCNT _IOWR('r', 21, struct sioc_lsg_req)
|
||
+ /* get s,g pkt count */
|
||
+
|
||
+/*
|
||
+ * Obsolete interface ioctls using struct ifreq that are supported
|
||
+ * for compatibility. New interface ioctls use struct lifreq.
|
||
+ */
|
||
+#define SIOCSIFADDR _IOW('i', 12, struct ifreq) /* set if address */
|
||
+#define SIOCGIFADDR _IOWR('i', 13, struct ifreq) /* get if address */
|
||
+#define SIOCSIFDSTADDR _IOW('i', 14, struct ifreq) /* set p-p address */
|
||
+#define SIOCGIFDSTADDR _IOWR('i', 15, struct ifreq) /* get p-p address */
|
||
+#define SIOCSIFFLAGS _IOW('i', 16, struct ifreq) /* set if flags */
|
||
+#define SIOCGIFFLAGS _IOWR('i', 17, struct ifreq) /* get if flags */
|
||
+#define SIOCSIFMEM _IOW('i', 18, struct ifreq) /* set interface mem */
|
||
+#define SIOCGIFMEM _IOWR('i', 19, struct ifreq) /* get interface mem */
|
||
+
|
||
+/*
|
||
+ * Needs to be defined using _IOWRN macro to make it datamodel independent.
|
||
+ * Argument is a struct ifconf.
|
||
+ */
|
||
+#define O_SIOCGIFCONF _IOWRN('i', 20, 8) /* old get if list */
|
||
+
|
||
+#define SIOCSIFMTU _IOW('i', 21, struct ifreq) /* set if mtu */
|
||
+#define SIOCGIFMTU _IOWR('i', 22, struct ifreq) /* get if mtu */
|
||
+
|
||
+ /* from 4.3BSD */
|
||
+#define SIOCGIFBRDADDR _IOWR('i', 23, struct ifreq) /* get broadcast addr */
|
||
+#define SIOCSIFBRDADDR _IOW('i', 24, struct ifreq) /* set broadcast addr */
|
||
+#define SIOCGIFNETMASK _IOWR('i', 25, struct ifreq) /* get subnetmask */
|
||
+#define SIOCSIFNETMASK _IOW('i', 26, struct ifreq) /* set subnetmask */
|
||
+#define SIOCGIFMETRIC _IOWR('i', 27, struct ifreq) /* get if metric */
|
||
+#define SIOCSIFMETRIC _IOW('i', 28, struct ifreq) /* set if metric */
|
||
+
|
||
+#define SIOCSARP _IOW('i', 30, struct arpreq) /* set arp entry */
|
||
+#define SIOCGARP _IOWR('i', 31, struct arpreq) /* get arp entry */
|
||
+#define SIOCDARP _IOW('i', 32, struct arpreq) /* delete arp entry */
|
||
+#define SIOCUPPER _IOW('i', 40, struct ifreq) /* attach upper layer */
|
||
+#define SIOCLOWER _IOW('i', 41, struct ifreq) /* attach lower layer */
|
||
+#define SIOCSETSYNC _IOW('i', 44, struct ifreq) /* set syncmode */
|
||
+#define SIOCGETSYNC _IOWR('i', 45, struct ifreq) /* get syncmode */
|
||
+#define SIOCSSDSTATS _IOWR('i', 46, struct ifreq) /* sync data stats */
|
||
+#define SIOCSSESTATS _IOWR('i', 47, struct ifreq) /* sync error stats */
|
||
+
|
||
+#define SIOCSPROMISC _IOW('i', 48, int) /* request promisc */
|
||
+ /* mode on/off */
|
||
+#define SIOCADDMULTI _IOW('i', 49, struct ifreq) /* set m/c address */
|
||
+#define SIOCDELMULTI _IOW('i', 50, struct ifreq) /* clr m/c address */
|
||
+
|
||
+/* STREAMS based socket emulation */
|
||
+
|
||
+#define SIOCGETNAME _IOR('s', 52, struct sockaddr) /* getsockname */
|
||
+#define SIOCGETPEER _IOR('s', 53, struct sockaddr) /* getpeername */
|
||
+#define IF_UNITSEL _IOW('s', 54, int) /* set unit number */
|
||
+#define SIOCXPROTO _IO('s', 55) /* empty proto table */
|
||
+
|
||
+#define SIOCIFDETACH _IOW('i', 56, struct ifreq) /* detach interface */
|
||
+#define SIOCGENPSTATS _IOWR('i', 57, struct ifreq) /* get ENP stats */
|
||
+#define SIOCX25XMT _IOWR('i', 59, struct ifreq) /* start a slp proc */
|
||
+ /* in x25if */
|
||
+#define SIOCX25RCV _IOWR('i', 60, struct ifreq) /* start a slp proc */
|
||
+ /* in x25if */
|
||
+#define SIOCX25TBL _IOWR('i', 61, struct ifreq) /* xfer lun table to */
|
||
+ /* kernel */
|
||
+#define SIOCSLGETREQ _IOWR('i', 71, struct ifreq) /* wait for switched */
|
||
+ /* SLIP request */
|
||
+#define SIOCSLSTAT _IOW('i', 72, struct ifreq) /* pass SLIP info to */
|
||
+ /* kernel */
|
||
+#define SIOCSIFNAME _IOW('i', 73, struct ifreq) /* set interface name */
|
||
+#define SIOCGENADDR _IOWR('i', 85, struct ifreq) /* Get ethernet addr */
|
||
+#define SIOCGIFNUM _IOR('i', 87, int) /* get number of ifs */
|
||
+
|
||
+#define SIOCGIFMUXID _IOWR('i', 88, struct ifreq) /* get if muxid */
|
||
+#define SIOCSIFMUXID _IOW('i', 89, struct ifreq) /* set if muxid */
|
||
+
|
||
+#define SIOCGIFINDEX _IOWR('i', 90, struct ifreq) /* get if index */
|
||
+#define SIOCSIFINDEX _IOW('i', 91, struct ifreq) /* set if index */
|
||
+#define SIOCGIFCONF _IOWRN('i', 92, 8) /* get if list */
|
||
+
|
||
+/*
|
||
+ * New interface ioctls that use the struct lifreq. Can be used for
|
||
+ * both IPv4 and IPv6.
|
||
+ */
|
||
+#define SIOCLIFREMOVEIF _IOW('i', 110, struct lifreq) /* delete logical */
|
||
+#define SIOCLIFADDIF _IOWR('i', 111, struct lifreq) /* create logical */
|
||
+
|
||
+#define SIOCSLIFADDR _IOW('i', 112, struct lifreq) /* set if address */
|
||
+#define SIOCGLIFADDR _IOWR('i', 113, struct lifreq) /* get if address */
|
||
+#define SIOCSLIFDSTADDR _IOW('i', 114, struct lifreq) /* set p-p address */
|
||
+#define SIOCGLIFDSTADDR _IOWR('i', 115, struct lifreq) /* get p-p address */
|
||
+#define SIOCSLIFFLAGS _IOW('i', 116, struct lifreq) /* set if flags */
|
||
+#define SIOCGLIFFLAGS _IOWR('i', 117, struct lifreq) /* get if flags */
|
||
+
|
||
+/*
|
||
+ * Needs to be defined using _IOWRN macro to make it datamodel independent.
|
||
+ * Argument is a struct lifconf.
|
||
+ */
|
||
+#define O_SIOCGLIFCONF _IOWRN('i', 120, 16) /* old get if list */
|
||
+#define SIOCSLIFMTU _IOW('i', 121, struct lifreq) /* set if mtu */
|
||
+#define SIOCGLIFMTU _IOWR('i', 122, struct lifreq) /* get if mtu */
|
||
+#define SIOCGLIFBRDADDR _IOWR('i', 123, struct lifreq) /* get broadcast addr */
|
||
+#define SIOCSLIFBRDADDR _IOW('i', 124, struct lifreq) /* set broadcast addr */
|
||
+#define SIOCGLIFNETMASK _IOWR('i', 125, struct lifreq) /* get subnetmask */
|
||
+#define SIOCSLIFNETMASK _IOW('i', 126, struct lifreq) /* set subnetmask */
|
||
+#define SIOCGLIFMETRIC _IOWR('i', 127, struct lifreq) /* get if metric */
|
||
+#define SIOCSLIFMETRIC _IOW('i', 128, struct lifreq) /* set if metric */
|
||
+#define SIOCSLIFNAME _IOWR('i', 129, struct lifreq) /* set interface name */
|
||
+#define SIOCGLIFNUM _IOWR('i', 130, struct lifnum) /* get number of ifs */
|
||
+#define SIOCGLIFMUXID _IOWR('i', 131, struct lifreq) /* get if muxid */
|
||
+#define SIOCSLIFMUXID _IOW('i', 132, struct lifreq) /* set if muxid */
|
||
+
|
||
+#define SIOCGLIFINDEX _IOWR('i', 133, struct lifreq) /* get if index */
|
||
+#define SIOCSLIFINDEX _IOW('i', 134, struct lifreq) /* set if index */
|
||
+
|
||
+#define SIOCSLIFTOKEN _IOW('i', 135, struct lifreq) /* Set token for link */
|
||
+ /* local address and */
|
||
+ /* autoconf */
|
||
+#define SIOCGLIFTOKEN _IOWR('i', 136, struct lifreq) /* Get token for link */
|
||
+ /* local address and */
|
||
+ /* autoconf */
|
||
+
|
||
+#define SIOCSLIFSUBNET _IOW('i', 137, struct lifreq) /* set subnet prefix */
|
||
+#define SIOCGLIFSUBNET _IOWR('i', 138, struct lifreq) /* get subnet prefix */
|
||
+
|
||
+#define SIOCSLIFLNKINFO _IOW('i', 139, struct lifreq) /* set link info */
|
||
+#define SIOCGLIFLNKINFO _IOWR('i', 140, struct lifreq) /* get link info */
|
||
+
|
||
+#define SIOCLIFDELND _IOW('i', 141, struct lifreq) /* Delete ND entry */
|
||
+#define SIOCLIFGETND _IOWR('i', 142, struct lifreq) /* Get ND entry */
|
||
+#define SIOCLIFSETND _IOW('i', 143, struct lifreq) /* Set ND entry */
|
||
+
|
||
+/*
|
||
+ * Address querying ioctls.
|
||
+ */
|
||
+#define SIOCTMYADDR _IOWR('i', 144, struct sioc_addrreq)
|
||
+ /* My address? */
|
||
+#define SIOCTONLINK _IOWR('i', 145, struct sioc_addrreq)
|
||
+ /* Address on-link? */
|
||
+#define SIOCTMYSITE _IOWR('i', 146, struct sioc_addrreq)
|
||
+ /* In this site? */
|
||
+
|
||
+/* 147-152 were SIOC*{TUNPARAM,IPSECONFIG} ioctls. Feel free to re-use. */
|
||
+
|
||
+/*
|
||
+ * 153 can be reused (was consolidation-private SIOCLIFFAILOVER).
|
||
+ */
|
||
+
|
||
+/*
|
||
+ * IP Multipathing ioctls.
|
||
+ */
|
||
+#define SIOCGLIFBINDING _IOWR('i', 154, struct lifreq)
|
||
+#define SIOCSLIFGROUPNAME _IOW('i', 155, struct lifreq)
|
||
+#define SIOCGLIFGROUPNAME _IOWR('i', 156, struct lifreq)
|
||
+#define SIOCGLIFGROUPINFO _IOWR('i', 157, struct lifgroupinfo)
|
||
+
|
||
+/*
|
||
+ * Leave 158 - 160 unused; used to be SIOC*IFARP ioctls.
|
||
+ * However, 161 can be reused (was consolidation-private SIOCSLIFOINDEX).
|
||
+ */
|
||
+
|
||
+/*
|
||
+ * IOCTLS which provide an interface to the IPv6 address selection policy.
|
||
+ */
|
||
+#define SIOCGIP6ADDRPOLICY _IOWRN('i', 162, 0)
|
||
+#define SIOCSIP6ADDRPOLICY _IOWN('i', 163, 0)
|
||
+
|
||
+/*
|
||
+ * IOCTL for retrieving sorting info for a list of destination addrs.
|
||
+ * Use the _IOWRN macro to make it datamodel independent. Argument
|
||
+ * is a struct dstinfo.
|
||
+ */
|
||
+#define SIOCGDSTINFO _IOWRN('i', 164, 0)
|
||
+#define SIOCGLIFCONF _IOWR('i', 165, 16) /* get if list */
|
||
+
|
||
+/*
|
||
+ * Extended IOCTLS for manipulating ARP cache entries.
|
||
+ */
|
||
+#define SIOCSXARP _IOW('i', 166, struct xarpreq) /* set an ARP entry */
|
||
+#define SIOCGXARP _IOWR('i', 167, struct xarpreq) /* get an ARP entry */
|
||
+#define SIOCDXARP _IOW('i', 168, struct xarpreq) /* delete ARP entry */
|
||
+
|
||
+/*
|
||
+ * IOCTL private to sockfs.
|
||
+ */
|
||
+#define _SIOCSOCKFALLBACK _IOW('i', 169, 0)
|
||
+
|
||
+/*
|
||
+ * IOCTLs for getting and setting zone associated with an interface, and
|
||
+ * unplumbing interfaces associated with a given zone.
|
||
+ */
|
||
+#define SIOCGLIFZONE _IOWR('i', 170, struct lifreq) /* get zone id */
|
||
+#define SIOCSLIFZONE _IOW('i', 171, struct lifreq) /* set zone id */
|
||
+
|
||
+/*
|
||
+ * IOCTLS for handling SCTP options.
|
||
+ */
|
||
+#define SIOCSCTPSOPT _IOWN('i', 172, 16) /* Set SCTP option */
|
||
+#define SIOCSCTPGOPT _IOWRN('i', 173, 16) /* Get SCTP option */
|
||
+#define SIOCSCTPPEELOFF _IOWR('i', 174, int) /* SCTP peeloff */
|
||
+
|
||
+/*
|
||
+ * IOCTLs for getting and setting the source address that is used for packets
|
||
+ * going out on the given interface.
|
||
+ */
|
||
+#define SIOCGLIFUSESRC _IOWR('i', 175, struct lifreq) /* get src addr */
|
||
+#define SIOCSLIFUSESRC _IOW('i', 176, struct lifreq) /* set src addr */
|
||
+
|
||
+/*
|
||
+ * IOCTL used to get all the interfaces that use the the specified interfaces'
|
||
+ * source address
|
||
+ */
|
||
+#define SIOCGLIFSRCOF _IOWRN('i', 177, 16) /* source of */
|
||
+
|
||
+/*
|
||
+ * IOCTLs for source specific multicast; get or set a socket's
|
||
+ * source filter for a particular multicast group. Argument is
|
||
+ * a struct group_filter. Defined in RFC 3678.
|
||
+ */
|
||
+#define SIOCGMSFILTER _IOWR('i', 178, 0)
|
||
+#define SIOCSMSFILTER _IOW('i', 179, 0)
|
||
+/*
|
||
+ * IPv4-specific versions of the above; get or set a socket's source
|
||
+ * filter for a particular multicast group, for PF_INET sockets only.
|
||
+ * Argument is a struct ip_msfilter.
|
||
+ */
|
||
+#define SIOCGIPMSFILTER _IOWR('i', 180, 0)
|
||
+#define SIOCSIPMSFILTER _IOW('i', 181, 0)
|
||
+
|
||
+/*
|
||
+ * 182 can be reused (was consolidation-private SIOCSIPMPFAILBACK).
|
||
+ */
|
||
+
|
||
+#define SIOCSENABLESDP _IOWR('i', 183, int) /* Enable SDP */
|
||
+
|
||
+#define SIOCSQPTR _IOWR('i', 184, int) /* set q_ptr of stream */
|
||
+
|
||
+/*
|
||
+ * SIOCGIFHWADDR and SIOCGLIFHWADDR (below) are available for PF_PACKET,
|
||
+ * PF_INET and PF_INET6 sockets.
|
||
+ */
|
||
+#define SIOCGIFHWADDR _IOWR('i', 185, struct ifreq)
|
||
+
|
||
+#define SIOCGSTAMP _IOWR('i', 186, struct timeval) /* PF_PACKET */
|
||
+
|
||
+/*
|
||
+ * Private ioctl for Integrated Load Balancer. The ioctl length varies.
|
||
+ */
|
||
+#define SIOCILB _IOWR('i', 187, 0)
|
||
+
|
||
+/*
|
||
+ * IOCTL's to get/set module specific or interface specific properties.
|
||
+ * Argument is a struct mod_ioc_prop_s. These ioctls are Consolidation Private.
|
||
+ */
|
||
+#define SIOCGETPROP _IOWRN('p', 188, 0)
|
||
+#define SIOCSETPROP _IOW('p', 189, 0)
|
||
+
|
||
+/*
|
||
+ * IOCTL used to check for the given ipif, whether DAD is in progress or
|
||
+ * DAD has completed. This ioctl is Consolidation Private.
|
||
+ */
|
||
+#define SIOCGLIFDADSTATE _IOWR('i', 190, struct lifreq)
|
||
+
|
||
+/*
|
||
+ * IOCTL used to generate an IPv6 address using the given prefix and the
|
||
+ * default token for the interface.
|
||
+ */
|
||
+#define SIOCSLIFPREFIX _IOWR('i', 191, struct lifreq)
|
||
+
|
||
+#define SIOCGLIFHWADDR _IOWR('i', 192, struct lifreq)
|
||
+
|
||
+#ifdef __cplusplus
|
||
+}
|
||
+#endif
|
||
+
|
||
+#endif /* _SYS_SOCKIO_H */
|
||
diff -Naur wide-dhcpv6-20080615.orig/missing/.svn/all-wcprops wide-dhcpv6-20080615/missing/.svn/all-wcprops
|
||
--- wide-dhcpv6-20080615.orig/missing/.svn/all-wcprops 1970-01-01 08:00:00.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/missing/.svn/all-wcprops 2013-12-30 16:11:42.000000000 +0800
|
||
@@ -0,0 +1,59 @@
|
||
+K 25
|
||
+svn:wc:ra_dav:version-url
|
||
+V 95
|
||
+/svn/TPDC/Broadcom/!svn/ver/1706/412/Product/VMG5313/userspace/zyxel/public/apps/dhcpv6/missing
|
||
+END
|
||
+arc4random.c
|
||
+K 25
|
||
+svn:wc:ra_dav:version-url
|
||
+V 108
|
||
+/svn/TPDC/Broadcom/!svn/ver/1706/412/Product/VMG5313/userspace/zyxel/public/apps/dhcpv6/missing/arc4random.c
|
||
+END
|
||
+getifaddrs.c
|
||
+K 25
|
||
+svn:wc:ra_dav:version-url
|
||
+V 108
|
||
+/svn/TPDC/Broadcom/!svn/ver/1706/412/Product/VMG5313/userspace/zyxel/public/apps/dhcpv6/missing/getifaddrs.c
|
||
+END
|
||
+strlcat.c
|
||
+K 25
|
||
+svn:wc:ra_dav:version-url
|
||
+V 105
|
||
+/svn/TPDC/Broadcom/!svn/ver/1706/412/Product/VMG5313/userspace/zyxel/public/apps/dhcpv6/missing/strlcat.c
|
||
+END
|
||
+err.h
|
||
+K 25
|
||
+svn:wc:ra_dav:version-url
|
||
+V 101
|
||
+/svn/TPDC/Broadcom/!svn/ver/1706/412/Product/VMG5313/userspace/zyxel/public/apps/dhcpv6/missing/err.h
|
||
+END
|
||
+arc4random.h
|
||
+K 25
|
||
+svn:wc:ra_dav:version-url
|
||
+V 108
|
||
+/svn/TPDC/Broadcom/!svn/ver/1706/412/Product/VMG5313/userspace/zyxel/public/apps/dhcpv6/missing/arc4random.h
|
||
+END
|
||
+warnx.c
|
||
+K 25
|
||
+svn:wc:ra_dav:version-url
|
||
+V 103
|
||
+/svn/TPDC/Broadcom/!svn/ver/1706/412/Product/VMG5313/userspace/zyxel/public/apps/dhcpv6/missing/warnx.c
|
||
+END
|
||
+strlcpy.c
|
||
+K 25
|
||
+svn:wc:ra_dav:version-url
|
||
+V 105
|
||
+/svn/TPDC/Broadcom/!svn/ver/1706/412/Product/VMG5313/userspace/zyxel/public/apps/dhcpv6/missing/strlcpy.c
|
||
+END
|
||
+ifaddrs.h
|
||
+K 25
|
||
+svn:wc:ra_dav:version-url
|
||
+V 105
|
||
+/svn/TPDC/Broadcom/!svn/ver/1706/412/Product/VMG5313/userspace/zyxel/public/apps/dhcpv6/missing/ifaddrs.h
|
||
+END
|
||
+daemon.c
|
||
+K 25
|
||
+svn:wc:ra_dav:version-url
|
||
+V 104
|
||
+/svn/TPDC/Broadcom/!svn/ver/1706/412/Product/VMG5313/userspace/zyxel/public/apps/dhcpv6/missing/daemon.c
|
||
+END
|
||
diff -Naur wide-dhcpv6-20080615.orig/missing/.svn/entries wide-dhcpv6-20080615/missing/.svn/entries
|
||
--- wide-dhcpv6-20080615.orig/missing/.svn/entries 1970-01-01 08:00:00.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/missing/.svn/entries 2013-12-30 16:11:42.000000000 +0800
|
||
@@ -0,0 +1,337 @@
|
||
+10
|
||
+
|
||
+dir
|
||
+4552
|
||
+http://svn.zyxel.com.tw/svn/TPDC/Broadcom/412/Product/VMG5313/userspace/zyxel/public/apps/dhcpv6/missing
|
||
+http://svn.zyxel.com.tw/svn/TPDC/Broadcom
|
||
+
|
||
+
|
||
+
|
||
+2013-04-24T01:26:48.626530Z
|
||
+1706
|
||
+jerry.lin4@zyxel.com.tw
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+b12e3367-17ef-584a-8d8e-8b73140cb9ea
|
||
+
|
||
+daemon.c
|
||
+file
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+2013-12-30T08:11:42.989130Z
|
||
+2728ceac270a74ef7d7f01f4aaa9e106
|
||
+2013-04-24T01:26:48.626530Z
|
||
+1706
|
||
+jerry.lin4@zyxel.com.tw
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+1908
|
||
+
|
||
+arc4random.c
|
||
+file
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+2013-12-30T08:11:42.989130Z
|
||
+fcd23caa13f68998d9ccd7beca97ec73
|
||
+2013-04-24T01:26:48.626530Z
|
||
+1706
|
||
+jerry.lin4@zyxel.com.tw
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+2140
|
||
+
|
||
+getifaddrs.c
|
||
+file
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+2013-12-30T08:11:42.989130Z
|
||
+986e242dd8baed678f068fbfd608bc25
|
||
+2013-04-24T01:26:48.626530Z
|
||
+1706
|
||
+jerry.lin4@zyxel.com.tw
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+5564
|
||
+
|
||
+strlcat.c
|
||
+file
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+2013-12-30T08:11:42.989130Z
|
||
+bdf2502667b480464d4ca5fe84fa4c71
|
||
+2013-04-24T01:26:48.626530Z
|
||
+1706
|
||
+jerry.lin4@zyxel.com.tw
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+2624
|
||
+
|
||
+sys
|
||
+dir
|
||
+
|
||
+err.h
|
||
+file
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+2013-12-30T08:11:42.989130Z
|
||
+149cd571f1856e6ded5a0ec7d6465fc8
|
||
+2013-04-24T01:26:48.626530Z
|
||
+1706
|
||
+jerry.lin4@zyxel.com.tw
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+1723
|
||
+
|
||
+arc4random.h
|
||
+file
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+2013-12-30T08:11:42.981130Z
|
||
+9dd4ac9d6242ebb441ac03ecb8528fd8
|
||
+2013-04-24T01:26:48.626530Z
|
||
+1706
|
||
+jerry.lin4@zyxel.com.tw
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+1731
|
||
+
|
||
+warnx.c
|
||
+file
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+2013-12-30T08:11:42.989130Z
|
||
+cd6f6013770d788e49073083bad7c201
|
||
+2013-04-24T01:26:48.626530Z
|
||
+1706
|
||
+jerry.lin4@zyxel.com.tw
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+1981
|
||
+
|
||
+strlcpy.c
|
||
+file
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+2013-12-30T08:11:42.989130Z
|
||
+61f7125ff1ddf1f931b2dbe9016f8255
|
||
+2013-04-24T01:26:48.626530Z
|
||
+1706
|
||
+jerry.lin4@zyxel.com.tw
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+2558
|
||
+
|
||
+ifaddrs.h
|
||
+file
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+2013-12-30T08:11:42.989130Z
|
||
+569b78e91c597100c3cdc10f596aa3c4
|
||
+2013-04-24T01:26:48.626530Z
|
||
+1706
|
||
+jerry.lin4@zyxel.com.tw
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+2064
|
||
+
|
||
diff -Naur wide-dhcpv6-20080615.orig/missing/.svn/text-base/arc4random.c.svn-base wide-dhcpv6-20080615/missing/.svn/text-base/arc4random.c.svn-base
|
||
--- wide-dhcpv6-20080615.orig/missing/.svn/text-base/arc4random.c.svn-base 1970-01-01 08:00:00.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/missing/.svn/text-base/arc4random.c.svn-base 2013-12-30 16:11:42.000000000 +0800
|
||
@@ -0,0 +1,67 @@
|
||
+/* $KAME: arc4random.c,v 1.1 2003/01/22 01:30:36 jinmei Exp $ */
|
||
+
|
||
+/*
|
||
+ * Copyright (C) 2000 WIDE Project.
|
||
+ * All rights reserved.
|
||
+ *
|
||
+ * Redistribution and use in source and binary forms, with or without
|
||
+ * modification, are permitted provided that the following conditions
|
||
+ * are met:
|
||
+ * 1. Redistributions of source code must retain the above copyright
|
||
+ * notice, this list of conditions and the following disclaimer.
|
||
+ * 2. Redistributions in binary form must reproduce the above copyright
|
||
+ * notice, this list of conditions and the following disclaimer in the
|
||
+ * documentation and/or other materials provided with the distribution.
|
||
+ * 3. Neither the name of the project nor the names of its contributors
|
||
+ * may be used to endorse or promote products derived from this software
|
||
+ * without specific prior written permission.
|
||
+ *
|
||
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
|
||
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
|
||
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||
+ * SUCH DAMAGE.
|
||
+ */
|
||
+/*
|
||
+ * a stub function to make random() to return good random numbers.
|
||
+ */
|
||
+
|
||
+#include <sys/types.h>
|
||
+#include <sys/param.h>
|
||
+#include <sys/uio.h>
|
||
+#include <stdlib.h>
|
||
+#include <unistd.h>
|
||
+#include <fcntl.h>
|
||
+#include <err.h>
|
||
+
|
||
+#include "arc4random.h"
|
||
+
|
||
+static int fd = -1;
|
||
+
|
||
+static void
|
||
+arc4random_init()
|
||
+{
|
||
+
|
||
+ fd = open("/dev/urandom", O_RDONLY, 0600);
|
||
+ if (fd < 0) {
|
||
+ err(1, "/dev/urandom");
|
||
+ /*NOTREACHED*/
|
||
+ }
|
||
+}
|
||
+
|
||
+u_int32_t
|
||
+arc4random()
|
||
+{
|
||
+ u_int32_t v;
|
||
+
|
||
+ if (fd < 0)
|
||
+ arc4random_init();
|
||
+ read(fd, &v, sizeof(v));
|
||
+ return v;
|
||
+}
|
||
diff -Naur wide-dhcpv6-20080615.orig/missing/.svn/text-base/arc4random.h.svn-base wide-dhcpv6-20080615/missing/.svn/text-base/arc4random.h.svn-base
|
||
--- wide-dhcpv6-20080615.orig/missing/.svn/text-base/arc4random.h.svn-base 1970-01-01 08:00:00.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/missing/.svn/text-base/arc4random.h.svn-base 2013-12-30 16:11:42.000000000 +0800
|
||
@@ -0,0 +1,37 @@
|
||
+/* $KAME: arc4random.h,v 1.1 2003/01/22 01:30:36 jinmei Exp $ */
|
||
+
|
||
+/*
|
||
+ * Copyright (C) 2000 WIDE Project.
|
||
+ * All rights reserved.
|
||
+ *
|
||
+ * Redistribution and use in source and binary forms, with or without
|
||
+ * modification, are permitted provided that the following conditions
|
||
+ * are met:
|
||
+ * 1. Redistributions of source code must retain the above copyright
|
||
+ * notice, this list of conditions and the following disclaimer.
|
||
+ * 2. Redistributions in binary form must reproduce the above copyright
|
||
+ * notice, this list of conditions and the following disclaimer in the
|
||
+ * documentation and/or other materials provided with the distribution.
|
||
+ * 3. Neither the name of the project nor the names of its contributors
|
||
+ * may be used to endorse or promote products derived from this software
|
||
+ * without specific prior written permission.
|
||
+ *
|
||
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
|
||
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
|
||
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||
+ * SUCH DAMAGE.
|
||
+ */
|
||
+
|
||
+#ifdef __sun__
|
||
+#define __P(x) x
|
||
+typedef uint32_t u_int32_t;
|
||
+#endif
|
||
+
|
||
+extern u_int32_t arc4random __P((void));
|
||
diff -Naur wide-dhcpv6-20080615.orig/missing/.svn/text-base/daemon.c.svn-base wide-dhcpv6-20080615/missing/.svn/text-base/daemon.c.svn-base
|
||
--- wide-dhcpv6-20080615.orig/missing/.svn/text-base/daemon.c.svn-base 1970-01-01 08:00:00.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/missing/.svn/text-base/daemon.c.svn-base 2013-12-30 16:11:42.000000000 +0800
|
||
@@ -0,0 +1,50 @@
|
||
+/*
|
||
+ * Copyright (c) 2006 WIDE Project. All rights reserved.
|
||
+ *
|
||
+ * Redistribution and use in source and binary forms, with or without
|
||
+ * modification, are permitted provided that the following conditions
|
||
+ * are met:
|
||
+ * 1. Redistributions of source code must retain the above copyright
|
||
+ * notice, this list of conditions and the following disclaimer.
|
||
+ * 2. Redistributions in binary form must reproduce the above copyright
|
||
+ * notice, this list of conditions and the following disclaimer in the
|
||
+ * documentation and/or other materials provided with the distribution.
|
||
+ * 3. Neither the name of the project nor the names of its contributors
|
||
+ * may be used to endorse or promote products derived from this software
|
||
+ * without specific prior written permission.
|
||
+ *
|
||
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
|
||
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
|
||
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||
+ * SUCH DAMAGE.
|
||
+ */
|
||
+
|
||
+#include <sys/types.h>
|
||
+#include <unistd.h>
|
||
+#include <fcntl.h>
|
||
+
|
||
+int
|
||
+daemon(int nochdir, int noclose)
|
||
+{
|
||
+ if (fork() != 0)
|
||
+ _exit(0);
|
||
+ if (nochdir == 0)
|
||
+ (void) chdir("/");
|
||
+ if (noclose == 0) {
|
||
+ (void) close(0);
|
||
+ (void) open("/dev/null", O_RDWR);
|
||
+ (void) dup2(0, 1);
|
||
+ (void) dup2(0, 2);
|
||
+ }
|
||
+ (void) setsid();
|
||
+ if (fork() != 0)
|
||
+ _exit(0);
|
||
+ return (0);
|
||
+}
|
||
diff -Naur wide-dhcpv6-20080615.orig/missing/.svn/text-base/err.h.svn-base wide-dhcpv6-20080615/missing/.svn/text-base/err.h.svn-base
|
||
--- wide-dhcpv6-20080615.orig/missing/.svn/text-base/err.h.svn-base 1970-01-01 08:00:00.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/missing/.svn/text-base/err.h.svn-base 2013-12-30 16:11:42.000000000 +0800
|
||
@@ -0,0 +1,34 @@
|
||
+/*
|
||
+ * Copyright (c) 2006 WIDE Project. All rights reserved.
|
||
+ *
|
||
+ * Redistribution and use in source and binary forms, with or without
|
||
+ * modification, are permitted provided that the following conditions
|
||
+ * are met:
|
||
+ * 1. Redistributions of source code must retain the above copyright
|
||
+ * notice, this list of conditions and the following disclaimer.
|
||
+ * 2. Redistributions in binary form must reproduce the above copyright
|
||
+ * notice, this list of conditions and the following disclaimer in the
|
||
+ * documentation and/or other materials provided with the distribution.
|
||
+ * 3. Neither the name of the project nor the names of its contributors
|
||
+ * may be used to endorse or promote products derived from this software
|
||
+ * without specific prior written permission.
|
||
+ *
|
||
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
|
||
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
|
||
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||
+ * SUCH DAMAGE.
|
||
+ */
|
||
+
|
||
+extern void err(int, const char *);
|
||
+/* PRINTFLIKE2 */
|
||
+extern void errx(int, const char *, ...);
|
||
+/* PRINTFLIKE1 */
|
||
+extern void warnx(const char *, ...);
|
||
+#define warn warnx
|
||
diff -Naur wide-dhcpv6-20080615.orig/missing/.svn/text-base/getifaddrs.c.svn-base wide-dhcpv6-20080615/missing/.svn/text-base/getifaddrs.c.svn-base
|
||
--- wide-dhcpv6-20080615.orig/missing/.svn/text-base/getifaddrs.c.svn-base 1970-01-01 08:00:00.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/missing/.svn/text-base/getifaddrs.c.svn-base 2013-12-30 16:11:42.000000000 +0800
|
||
@@ -0,0 +1,217 @@
|
||
+/*
|
||
+ * Copyright (c) 2006 WIDE Project. All rights reserved.
|
||
+ *
|
||
+ * Redistribution and use in source and binary forms, with or without
|
||
+ * modification, are permitted provided that the following conditions
|
||
+ * are met:
|
||
+ * 1. Redistributions of source code must retain the above copyright
|
||
+ * notice, this list of conditions and the following disclaimer.
|
||
+ * 2. Redistributions in binary form must reproduce the above copyright
|
||
+ * notice, this list of conditions and the following disclaimer in the
|
||
+ * documentation and/or other materials provided with the distribution.
|
||
+ * 3. Neither the name of the project nor the names of its contributors
|
||
+ * may be used to endorse or promote products derived from this software
|
||
+ * without specific prior written permission.
|
||
+ *
|
||
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
|
||
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
|
||
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||
+ * SUCH DAMAGE.
|
||
+ */
|
||
+
|
||
+#include <unistd.h>
|
||
+#include <stdlib.h>
|
||
+#include <errno.h>
|
||
+#include <string.h>
|
||
+#include <sys/sockio.h>
|
||
+#include <sys/socket.h>
|
||
+#include <net/if.h>
|
||
+
|
||
+#include "ifaddrs.h"
|
||
+
|
||
+static int
|
||
+get_lifreq(int fd, struct lifreq **ifr_ret)
|
||
+{
|
||
+ struct lifnum lifn;
|
||
+ struct lifconf lifc;
|
||
+ struct lifreq *lifrp;
|
||
+
|
||
+ lifn.lifn_family = AF_UNSPEC;
|
||
+ lifn.lifn_flags = 0;
|
||
+ if (ioctl(fd, SIOCGLIFNUM, &lifn) == -1)
|
||
+ lifn.lifn_count = 16;
|
||
+ else
|
||
+ lifn.lifn_count += 16;
|
||
+
|
||
+ for (;;) {
|
||
+ lifc.lifc_len = lifn.lifn_count * sizeof (*lifrp);
|
||
+ lifrp = malloc(lifc.lifc_len);
|
||
+ if (lifrp == NULL)
|
||
+ return (-1);
|
||
+
|
||
+ lifc.lifc_family = AF_UNSPEC;
|
||
+ lifc.lifc_flags = 0;
|
||
+ lifc.lifc_buf = (char *)lifrp;
|
||
+ if (ioctl(fd, SIOCGLIFCONF, &lifc) == -1) {
|
||
+ free(lifrp);
|
||
+ if (errno == EINVAL) {
|
||
+ lifn.lifn_count <<= 1;
|
||
+ continue;
|
||
+ }
|
||
+ (void) close(fd);
|
||
+ return (-1);
|
||
+ }
|
||
+ if (lifc.lifc_len < (lifn.lifn_count - 1) * sizeof (*lifrp))
|
||
+ break;
|
||
+ free(lifrp);
|
||
+ lifn.lifn_count <<= 1;
|
||
+ }
|
||
+ (void) close(fd);
|
||
+
|
||
+ *ifr_ret = lifrp;
|
||
+
|
||
+ return (lifc.lifc_len / sizeof (*lifrp));
|
||
+}
|
||
+
|
||
+static size_t
|
||
+nbytes(const struct lifreq *lifrp, int nlif, size_t socklen)
|
||
+{
|
||
+ size_t len = 0;
|
||
+ size_t slen;
|
||
+
|
||
+ while (nlif > 0) {
|
||
+ slen = strlen(lifrp->lifr_name) + 1;
|
||
+ len += sizeof (struct ifaddrs) + ((slen + 3) & ~3);
|
||
+ len += 3 * socklen;
|
||
+ lifrp++;
|
||
+ nlif--;
|
||
+ }
|
||
+ return (len);
|
||
+}
|
||
+
|
||
+static struct sockaddr *
|
||
+addrcpy(struct sockaddr_storage *addr, char **bufp)
|
||
+{
|
||
+ char *buf = *bufp;
|
||
+ size_t len;
|
||
+
|
||
+ len = addr->ss_family == AF_INET ? sizeof (struct sockaddr_in) :
|
||
+ sizeof (struct sockaddr_in6);
|
||
+ (void) memcpy(buf, addr, len);
|
||
+ *bufp = buf + len;
|
||
+ return ((struct sockaddr *)buf);
|
||
+}
|
||
+
|
||
+static int
|
||
+populate(struct ifaddrs *ifa, int fd, struct lifreq *lifrp, int nlif, int af,
|
||
+ char **bufp)
|
||
+{
|
||
+ char *buf = *bufp;
|
||
+ size_t slen;
|
||
+
|
||
+ while (nlif > 0) {
|
||
+ ifa->ifa_next = (nlif > 1) ? ifa + 1 : NULL;
|
||
+ (void) strcpy(ifa->ifa_name = buf, lifrp->lifr_name);
|
||
+ slen = strlen(lifrp->lifr_name) + 1;
|
||
+ buf += (slen + 3) & ~3;
|
||
+ if (ioctl(fd, SIOCGLIFFLAGS, lifrp) == -1)
|
||
+ ifa->ifa_flags = 0;
|
||
+ else
|
||
+ ifa->ifa_flags = lifrp->lifr_flags;
|
||
+ if (ioctl(fd, SIOCGLIFADDR, lifrp) == -1)
|
||
+ ifa->ifa_addr = NULL;
|
||
+ else
|
||
+ ifa->ifa_addr = addrcpy(&lifrp->lifr_addr, &buf);
|
||
+ if (ioctl(fd, SIOCGLIFNETMASK, lifrp) == -1)
|
||
+ ifa->ifa_netmask = NULL;
|
||
+ else
|
||
+ ifa->ifa_netmask = addrcpy(&lifrp->lifr_addr, &buf);
|
||
+ if (ifa->ifa_flags & IFF_POINTOPOINT) {
|
||
+ if (ioctl(fd, SIOCGLIFDSTADDR, lifrp) == -1)
|
||
+ ifa->ifa_dstaddr = NULL;
|
||
+ else
|
||
+ ifa->ifa_dstaddr =
|
||
+ addrcpy(&lifrp->lifr_dstaddr, &buf);
|
||
+ } else if (ifa->ifa_flags & IFF_BROADCAST) {
|
||
+ if (ioctl(fd, SIOCGLIFBRDADDR, lifrp) == -1)
|
||
+ ifa->ifa_broadaddr = NULL;
|
||
+ else
|
||
+ ifa->ifa_broadaddr =
|
||
+ addrcpy(&lifrp->lifr_broadaddr, &buf);
|
||
+ } else {
|
||
+ ifa->ifa_dstaddr = NULL;
|
||
+ }
|
||
+
|
||
+ ifa++;
|
||
+ nlif--;
|
||
+ lifrp++;
|
||
+ }
|
||
+ *bufp = buf;
|
||
+ return (0);
|
||
+}
|
||
+
|
||
+int
|
||
+getifaddrs(struct ifaddrs **ifap)
|
||
+{
|
||
+ int fd4, fd6;
|
||
+ int nif4, nif6 = 0;
|
||
+ struct lifreq *ifr4 = NULL;
|
||
+ struct lifreq *ifr6 = NULL;
|
||
+ struct ifaddrs *ifa = NULL;
|
||
+ char *buf;
|
||
+
|
||
+ if ((fd4 = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
|
||
+ return (-1);
|
||
+ if ((fd6 = socket(AF_INET6, SOCK_DGRAM, 0)) == -1 &&
|
||
+ errno != EAFNOSUPPORT) {
|
||
+ (void) close(fd4);
|
||
+ return (-1);
|
||
+ }
|
||
+
|
||
+ if ((nif4 = get_lifreq(fd4, &ifr4)) == -1 ||
|
||
+ (fd6 != -1 && (nif6 = get_lifreq(fd6, &ifr6)) == -1))
|
||
+ goto failure;
|
||
+
|
||
+ if (nif4 == 0 && nif6 == 0) {
|
||
+ *ifap = NULL;
|
||
+ return (0);
|
||
+ }
|
||
+
|
||
+ ifa = malloc(nbytes(ifr4, nif4, sizeof (struct sockaddr_in)) +
|
||
+ nbytes(ifr6, nif6, sizeof (struct sockaddr_in6)));
|
||
+ if (ifa == NULL)
|
||
+ goto failure;
|
||
+
|
||
+ buf = (char *)(ifa + nif4 + nif6);
|
||
+
|
||
+ if (populate(ifa, fd4, ifr4, nif4, AF_INET, &buf) == -1)
|
||
+ goto failure;
|
||
+ if (nif4 > 0 && nif6 > 0)
|
||
+ ifa[nif4 - 1].ifa_next = ifa + nif4;
|
||
+ if (populate(ifa + nif4, fd6, ifr6, nif6, AF_INET6, &buf) == -1)
|
||
+ goto failure;
|
||
+
|
||
+ return (0);
|
||
+
|
||
+failure:
|
||
+ free(ifa);
|
||
+ (void) close(fd4);
|
||
+ if (fd6 != -1)
|
||
+ (void) close(fd6);
|
||
+ free(ifr4);
|
||
+ free(ifr6);
|
||
+ return (-1);
|
||
+}
|
||
+
|
||
+void
|
||
+freeifaddrs(struct ifaddrs *ifa)
|
||
+{
|
||
+ free(ifa);
|
||
+}
|
||
diff -Naur wide-dhcpv6-20080615.orig/missing/.svn/text-base/ifaddrs.h.svn-base wide-dhcpv6-20080615/missing/.svn/text-base/ifaddrs.h.svn-base
|
||
--- wide-dhcpv6-20080615.orig/missing/.svn/text-base/ifaddrs.h.svn-base 1970-01-01 08:00:00.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/missing/.svn/text-base/ifaddrs.h.svn-base 2013-12-30 16:11:42.000000000 +0800
|
||
@@ -0,0 +1,44 @@
|
||
+/*
|
||
+ * Copyright (c) 2006 WIDE Project. All rights reserved.
|
||
+ *
|
||
+ * Redistribution and use in source and binary forms, with or without
|
||
+ * modification, are permitted provided that the following conditions
|
||
+ * are met:
|
||
+ * 1. Redistributions of source code must retain the above copyright
|
||
+ * notice, this list of conditions and the following disclaimer.
|
||
+ * 2. Redistributions in binary form must reproduce the above copyright
|
||
+ * notice, this list of conditions and the following disclaimer in the
|
||
+ * documentation and/or other materials provided with the distribution.
|
||
+ * 3. Neither the name of the project nor the names of its contributors
|
||
+ * may be used to endorse or promote products derived from this software
|
||
+ * without specific prior written permission.
|
||
+ *
|
||
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
|
||
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
|
||
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||
+ * SUCH DAMAGE.
|
||
+ */
|
||
+
|
||
+#include <sys/types.h>
|
||
+
|
||
+#undef ifa_broadaddr
|
||
+#undef ifa_dstaddr
|
||
+struct ifaddrs {
|
||
+ struct ifaddrs *ifa_next; /* Pointer to next struct */
|
||
+ char *ifa_name; /* Interface name */
|
||
+ uint64_t ifa_flags; /* Interface flags */
|
||
+ struct sockaddr *ifa_addr; /* Interface address */
|
||
+ struct sockaddr *ifa_netmask; /* Interface netmask */
|
||
+ struct sockaddr *ifa_dstaddr; /* P2P interface destination */
|
||
+};
|
||
+#define ifa_broadaddr ifa_dstaddr
|
||
+
|
||
+extern int getifaddrs(struct ifaddrs **);
|
||
+extern void freeifaddrs(struct ifaddrs *);
|
||
diff -Naur wide-dhcpv6-20080615.orig/missing/.svn/text-base/strlcat.c.svn-base wide-dhcpv6-20080615/missing/.svn/text-base/strlcat.c.svn-base
|
||
--- wide-dhcpv6-20080615.orig/missing/.svn/text-base/strlcat.c.svn-base 1970-01-01 08:00:00.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/missing/.svn/text-base/strlcat.c.svn-base 2013-12-30 16:11:42.000000000 +0800
|
||
@@ -0,0 +1,75 @@
|
||
+/* $NetBSD: strlcat.c,v 1.5 1999/09/20 04:39:47 lukem Exp $ */
|
||
+/* from OpenBSD: strlcat.c,v 1.2 1999/06/17 16:28:58 millert Exp */
|
||
+
|
||
+/*
|
||
+ * Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
|
||
+ * All rights reserved.
|
||
+ *
|
||
+ * Redistribution and use in source and binary forms, with or without
|
||
+ * modification, are permitted provided that the following conditions
|
||
+ * are met:
|
||
+ * 1. Redistributions of source code must retain the above copyright
|
||
+ * notice, this list of conditions and the following disclaimer.
|
||
+ * 2. Redistributions in binary form must reproduce the above copyright
|
||
+ * notice, this list of conditions and the following disclaimer in the
|
||
+ * documentation and/or other materials provided with the distribution.
|
||
+ * 3. The name of the author may not be used to endorse or promote products
|
||
+ * derived from this software without specific prior written permission.
|
||
+ *
|
||
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
||
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||
+ * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
+ */
|
||
+
|
||
+#include <sys/cdefs.h>
|
||
+#if defined(LIBC_SCCS) && !defined(lint)
|
||
+__RCSID("$NetBSD: strlcat.c,v 1.5 1999/09/20 04:39:47 lukem Exp $");
|
||
+#endif /* LIBC_SCCS and not lint */
|
||
+
|
||
+#include <sys/types.h>
|
||
+#include <assert.h>
|
||
+#include <string.h>
|
||
+
|
||
+/*
|
||
+ * Appends src to string dst of size siz (unlike strncat, siz is the
|
||
+ * full size of dst, not space left). At most siz-1 characters
|
||
+ * will be copied. Always NUL terminates (unless siz == 0).
|
||
+ * Returns strlen(src); if retval >= siz, truncation occurred.
|
||
+ */
|
||
+size_t
|
||
+strlcat(dst, src, siz)
|
||
+ char *dst;
|
||
+ const char *src;
|
||
+ size_t siz;
|
||
+{
|
||
+ register char *d = dst;
|
||
+ register const char *s = src;
|
||
+ register size_t n = siz;
|
||
+ size_t dlen;
|
||
+
|
||
+ /* Find the end of dst and adjust bytes left but don't go past end */
|
||
+ while (*d != '\0' && n-- != 0)
|
||
+ d++;
|
||
+ dlen = d - dst;
|
||
+ n = siz - dlen;
|
||
+
|
||
+ if (n == 0)
|
||
+ return(dlen + strlen(s));
|
||
+ while (*s != '\0') {
|
||
+ if (n != 1) {
|
||
+ *d++ = *s;
|
||
+ n--;
|
||
+ }
|
||
+ s++;
|
||
+ }
|
||
+ *d = '\0';
|
||
+
|
||
+ return(dlen + (s - src)); /* count does not include NUL */
|
||
+}
|
||
diff -Naur wide-dhcpv6-20080615.orig/missing/.svn/text-base/strlcpy.c.svn-base wide-dhcpv6-20080615/missing/.svn/text-base/strlcpy.c.svn-base
|
||
--- wide-dhcpv6-20080615.orig/missing/.svn/text-base/strlcpy.c.svn-base 1970-01-01 08:00:00.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/missing/.svn/text-base/strlcpy.c.svn-base 2013-12-30 16:11:42.000000000 +0800
|
||
@@ -0,0 +1,72 @@
|
||
+/* $NetBSD: strlcpy.c,v 1.5 1999/09/20 04:39:47 lukem Exp $ */
|
||
+/* from OpenBSD: strlcpy.c,v 1.4 1999/05/01 18:56:41 millert Exp */
|
||
+
|
||
+/*
|
||
+ * Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
|
||
+ * All rights reserved.
|
||
+ *
|
||
+ * Redistribution and use in source and binary forms, with or without
|
||
+ * modification, are permitted provided that the following conditions
|
||
+ * are met:
|
||
+ * 1. Redistributions of source code must retain the above copyright
|
||
+ * notice, this list of conditions and the following disclaimer.
|
||
+ * 2. Redistributions in binary form must reproduce the above copyright
|
||
+ * notice, this list of conditions and the following disclaimer in the
|
||
+ * documentation and/or other materials provided with the distribution.
|
||
+ * 3. The name of the author may not be used to endorse or promote products
|
||
+ * derived from this software without specific prior written permission.
|
||
+ *
|
||
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
||
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||
+ * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
+ */
|
||
+
|
||
+#include <sys/cdefs.h>
|
||
+#if defined(LIBC_SCCS) && !defined(lint)
|
||
+__RCSID("$NetBSD: strlcpy.c,v 1.5 1999/09/20 04:39:47 lukem Exp $");
|
||
+#endif /* LIBC_SCCS and not lint */
|
||
+
|
||
+#include <sys/types.h>
|
||
+#include <assert.h>
|
||
+#include <string.h>
|
||
+
|
||
+/*
|
||
+ * Copy src to string dst of size siz. At most siz-1 characters
|
||
+ * will be copied. Always NUL terminates (unless siz == 0).
|
||
+ * Returns strlen(src); if retval >= siz, truncation occurred.
|
||
+ */
|
||
+size_t
|
||
+strlcpy(dst, src, siz)
|
||
+ char *dst;
|
||
+ const char *src;
|
||
+ size_t siz;
|
||
+{
|
||
+ register char *d = dst;
|
||
+ register const char *s = src;
|
||
+ register size_t n = siz;
|
||
+
|
||
+ /* Copy as many bytes as will fit */
|
||
+ if (n != 0 && --n != 0) {
|
||
+ do {
|
||
+ if ((*d++ = *s++) == 0)
|
||
+ break;
|
||
+ } while (--n != 0);
|
||
+ }
|
||
+
|
||
+ /* Not enough room in dst, add NUL and traverse rest of src */
|
||
+ if (n == 0) {
|
||
+ if (siz != 0)
|
||
+ *d = '\0'; /* NUL-terminate dst */
|
||
+ while (*s++)
|
||
+ ;
|
||
+ }
|
||
+
|
||
+ return(s - src - 1); /* count does not include NUL */
|
||
+}
|
||
diff -Naur wide-dhcpv6-20080615.orig/missing/.svn/text-base/warnx.c.svn-base wide-dhcpv6-20080615/missing/.svn/text-base/warnx.c.svn-base
|
||
--- wide-dhcpv6-20080615.orig/missing/.svn/text-base/warnx.c.svn-base 1970-01-01 08:00:00.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/missing/.svn/text-base/warnx.c.svn-base 2013-12-30 16:11:42.000000000 +0800
|
||
@@ -0,0 +1,59 @@
|
||
+/*
|
||
+ * Copyright (c) 2006 WIDE Project. All rights reserved.
|
||
+ *
|
||
+ * Redistribution and use in source and binary forms, with or without
|
||
+ * modification, are permitted provided that the following conditions
|
||
+ * are met:
|
||
+ * 1. Redistributions of source code must retain the above copyright
|
||
+ * notice, this list of conditions and the following disclaimer.
|
||
+ * 2. Redistributions in binary form must reproduce the above copyright
|
||
+ * notice, this list of conditions and the following disclaimer in the
|
||
+ * documentation and/or other materials provided with the distribution.
|
||
+ * 3. Neither the name of the project nor the names of its contributors
|
||
+ * may be used to endorse or promote products derived from this software
|
||
+ * without specific prior written permission.
|
||
+ *
|
||
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
|
||
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
|
||
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||
+ * SUCH DAMAGE.
|
||
+ */
|
||
+
|
||
+#include <stdio.h>
|
||
+#include <stdlib.h>
|
||
+#include <stdarg.h>
|
||
+
|
||
+void
|
||
+err(int retv, const char *str)
|
||
+{
|
||
+ (void) fprintf(stderr, "%s\n", str);
|
||
+ exit(retv);
|
||
+}
|
||
+
|
||
+void
|
||
+errx(int retv, const char *fmt, ...)
|
||
+{
|
||
+ va_list args;
|
||
+
|
||
+ va_start(args, fmt);
|
||
+ (void) vfprintf(stderr, fmt, args);
|
||
+ va_end(args);
|
||
+ exit(retv);
|
||
+}
|
||
+
|
||
+void
|
||
+warnx(const char *fmt, ...)
|
||
+{
|
||
+ va_list args;
|
||
+
|
||
+ va_start(args, fmt);
|
||
+ (void) vfprintf(stderr, fmt, args);
|
||
+ va_end(args);
|
||
+}
|
||
diff -Naur wide-dhcpv6-20080615.orig/missing/sys/.svn/all-wcprops wide-dhcpv6-20080615/missing/sys/.svn/all-wcprops
|
||
--- wide-dhcpv6-20080615.orig/missing/sys/.svn/all-wcprops 1970-01-01 08:00:00.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/missing/sys/.svn/all-wcprops 2013-12-30 16:11:42.000000000 +0800
|
||
@@ -0,0 +1,11 @@
|
||
+K 25
|
||
+svn:wc:ra_dav:version-url
|
||
+V 99
|
||
+/svn/TPDC/Broadcom/!svn/ver/1706/412/Product/VMG5313/userspace/zyxel/public/apps/dhcpv6/missing/sys
|
||
+END
|
||
+queue.h
|
||
+K 25
|
||
+svn:wc:ra_dav:version-url
|
||
+V 107
|
||
+/svn/TPDC/Broadcom/!svn/ver/1706/412/Product/VMG5313/userspace/zyxel/public/apps/dhcpv6/missing/sys/queue.h
|
||
+END
|
||
diff -Naur wide-dhcpv6-20080615.orig/missing/sys/.svn/entries wide-dhcpv6-20080615/missing/sys/.svn/entries
|
||
--- wide-dhcpv6-20080615.orig/missing/sys/.svn/entries 1970-01-01 08:00:00.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/missing/sys/.svn/entries 2013-12-30 16:11:42.000000000 +0800
|
||
@@ -0,0 +1,62 @@
|
||
+10
|
||
+
|
||
+dir
|
||
+4552
|
||
+http://svn.zyxel.com.tw/svn/TPDC/Broadcom/412/Product/VMG5313/userspace/zyxel/public/apps/dhcpv6/missing/sys
|
||
+http://svn.zyxel.com.tw/svn/TPDC/Broadcom
|
||
+
|
||
+
|
||
+
|
||
+2013-04-24T01:26:48.626530Z
|
||
+1706
|
||
+jerry.lin4@zyxel.com.tw
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+b12e3367-17ef-584a-8d8e-8b73140cb9ea
|
||
+
|
||
+queue.h
|
||
+file
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+2013-12-30T08:11:42.977130Z
|
||
+8214544b1a65ed0e1e672b0435582e92
|
||
+2013-04-24T01:26:48.626530Z
|
||
+1706
|
||
+jerry.lin4@zyxel.com.tw
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+
|
||
+4819
|
||
+
|
||
diff -Naur wide-dhcpv6-20080615.orig/missing/sys/.svn/text-base/queue.h.svn-base wide-dhcpv6-20080615/missing/sys/.svn/text-base/queue.h.svn-base
|
||
--- wide-dhcpv6-20080615.orig/missing/sys/.svn/text-base/queue.h.svn-base 1970-01-01 08:00:00.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/missing/sys/.svn/text-base/queue.h.svn-base 2013-12-30 16:11:42.000000000 +0800
|
||
@@ -0,0 +1,137 @@
|
||
+/*
|
||
+ * Copyright (c) 1991, 1993
|
||
+ * The Regents of the University of California. All rights reserved.
|
||
+ *
|
||
+ * Redistribution and use in source and binary forms, with or without
|
||
+ * modification, are permitted provided that the following conditions
|
||
+ * are met:
|
||
+ * 1. Redistributions of source code must retain the above copyright
|
||
+ * notice, this list of conditions and the following disclaimer.
|
||
+ * 2. Redistributions in binary form must reproduce the above copyright
|
||
+ * notice, this list of conditions and the following disclaimer in the
|
||
+ * documentation and/or other materials provided with the distribution.
|
||
+ * 3. All advertising materials mentioning features or use of this software
|
||
+ * must display the following acknowledgement:
|
||
+ * This product includes software developed by the University of
|
||
+ * California, Berkeley and its contributors.
|
||
+ * 4. Neither the name of the University nor the names of its contributors
|
||
+ * may be used to endorse or promote products derived from this software
|
||
+ * without specific prior written permission.
|
||
+ *
|
||
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||
+ * SUCH DAMAGE.
|
||
+ *
|
||
+ * Adapted from FreeBSD sys/queue.h by James Carlson <james.d.carlson@sun.com>
|
||
+ *
|
||
+ * @(#)queue.h 8.5 (Berkeley) 8/20/94
|
||
+ * $FreeBSD: src/sys/sys/queue.h,v 1.32.2.6 2001/12/18 10:09:02 ru Exp $
|
||
+ */
|
||
+
|
||
+/*
|
||
+ * Tail queue declarations.
|
||
+ */
|
||
+#define TAILQ_HEAD(name, type) \
|
||
+struct name { \
|
||
+ struct type *tqh_first; /* first element */ \
|
||
+ struct type **tqh_last; /* addr of last next element */ \
|
||
+}
|
||
+
|
||
+#define TAILQ_ENTRY(type) \
|
||
+struct { \
|
||
+ struct type *tqe_next; /* next element */ \
|
||
+ struct type **tqe_prev; /* address of previous next element */ \
|
||
+}
|
||
+
|
||
+/*
|
||
+ * Tail queue functions.
|
||
+ */
|
||
+#define TAILQ_EMPTY(head) ((head)->tqh_first == NULL)
|
||
+
|
||
+#define TAILQ_FIRST(head) ((head)->tqh_first)
|
||
+
|
||
+#define TAILQ_INIT(head) do { \
|
||
+ TAILQ_FIRST((head)) = NULL; \
|
||
+ (head)->tqh_last = &TAILQ_FIRST((head)); \
|
||
+} while (0)
|
||
+
|
||
+#define TAILQ_INSERT_HEAD(head, elm, field) do { \
|
||
+ if ((TAILQ_NEXT((elm), field) = TAILQ_FIRST((head))) != NULL) \
|
||
+ TAILQ_FIRST((head))->field.tqe_prev = \
|
||
+ &TAILQ_NEXT((elm), field); \
|
||
+ else \
|
||
+ (head)->tqh_last = &TAILQ_NEXT((elm), field); \
|
||
+ TAILQ_FIRST((head)) = (elm); \
|
||
+ (elm)->field.tqe_prev = &TAILQ_FIRST((head)); \
|
||
+} while (0)
|
||
+
|
||
+#define TAILQ_INSERT_TAIL(head, elm, field) do { \
|
||
+ TAILQ_NEXT((elm), field) = NULL; \
|
||
+ (elm)->field.tqe_prev = (head)->tqh_last; \
|
||
+ *(head)->tqh_last = (elm); \
|
||
+ (head)->tqh_last = &TAILQ_NEXT((elm), field); \
|
||
+} while (0)
|
||
+
|
||
+#define TAILQ_LAST(head, headname) \
|
||
+ (*(((struct headname *)((head)->tqh_last))->tqh_last))
|
||
+
|
||
+#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next)
|
||
+
|
||
+#define TAILQ_REMOVE(head, elm, field) do { \
|
||
+ if ((TAILQ_NEXT((elm), field)) != NULL) \
|
||
+ TAILQ_NEXT((elm), field)->field.tqe_prev = \
|
||
+ (elm)->field.tqe_prev; \
|
||
+ else \
|
||
+ (head)->tqh_last = (elm)->field.tqe_prev; \
|
||
+ *(elm)->field.tqe_prev = TAILQ_NEXT((elm), field); \
|
||
+} while (0)
|
||
+
|
||
+/*
|
||
+ * List declarations.
|
||
+ */
|
||
+#define LIST_HEAD(name, type) \
|
||
+struct name { \
|
||
+ struct type *lh_first; /* first element */ \
|
||
+}
|
||
+
|
||
+#define LIST_ENTRY(type) \
|
||
+struct { \
|
||
+ struct type *le_next; /* next element */ \
|
||
+ struct type **le_prev; /* address of previous next element */ \
|
||
+}
|
||
+
|
||
+/*
|
||
+ * List functions.
|
||
+ */
|
||
+
|
||
+#define LIST_EMPTY(head) ((head)->lh_first == NULL)
|
||
+
|
||
+#define LIST_FIRST(head) ((head)->lh_first)
|
||
+
|
||
+#define LIST_INIT(head) do { \
|
||
+ LIST_FIRST((head)) = NULL; \
|
||
+} while (0)
|
||
+
|
||
+#define LIST_INSERT_HEAD(head, elm, field) do { \
|
||
+ if ((LIST_NEXT((elm), field) = LIST_FIRST((head))) != NULL) \
|
||
+ LIST_FIRST((head))->field.le_prev = &LIST_NEXT((elm), field);\
|
||
+ LIST_FIRST((head)) = (elm); \
|
||
+ (elm)->field.le_prev = &LIST_FIRST((head)); \
|
||
+} while (0)
|
||
+
|
||
+#define LIST_NEXT(elm, field) ((elm)->field.le_next)
|
||
+
|
||
+#define LIST_REMOVE(elm, field) do { \
|
||
+ if (LIST_NEXT((elm), field) != NULL) \
|
||
+ LIST_NEXT((elm), field)->field.le_prev = \
|
||
+ (elm)->field.le_prev; \
|
||
+ *(elm)->field.le_prev = LIST_NEXT((elm), field); \
|
||
+} while (0)
|
||
diff -Naur wide-dhcpv6-20080615.orig/prefixconf.c wide-dhcpv6-20080615/prefixconf.c
|
||
--- wide-dhcpv6-20080615.orig/prefixconf.c 2007-03-21 17:52:55.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/prefixconf.c 2013-12-30 16:11:43.000000000 +0800
|
||
@@ -60,6 +60,13 @@
|
||
#include "dhcp6c_ia.h"
|
||
#include "prefixconf.h"
|
||
|
||
+/*zyxel*/
|
||
+#include <stdbool.h>
|
||
+#include <json/json.h>
|
||
+
|
||
+extern struct json_object *dhcp6cMsg;
|
||
+/*zyxel end*/
|
||
+
|
||
TAILQ_HEAD(siteprefix_list, siteprefix);
|
||
struct iactl_pd {
|
||
struct iactl common;
|
||
@@ -249,6 +256,8 @@
|
||
break;
|
||
}
|
||
|
||
+ addPrefixInfoToMsg(IFADDRCONF_ADD, sp);
|
||
+
|
||
return (0);
|
||
}
|
||
|
||
@@ -515,3 +524,21 @@
|
||
return (ifaddrconf(cmd, pconf->ifname, &ifpfx->ifaddr, ifpfx->plen,
|
||
ND6_INFINITE_LIFETIME, ND6_INFINITE_LIFETIME));
|
||
}
|
||
+
|
||
+/*zyxel*/
|
||
+inline void addPrefixInfoToMsg(ifaddrconf_cmd_t cmd, struct siteprefix *sp)
|
||
+{
|
||
+ char prefix[48] = {0};
|
||
+
|
||
+ dprintf(LOG_ERR, FNAME, "%s : Enter\n", __FUNCTION__);
|
||
+
|
||
+ sprintf(prefix, "%s/%d", in6addr2str(&sp->prefix.addr, 0), sp->prefix.plen);
|
||
+
|
||
+ json_object_object_add(dhcp6cMsg, "prefixAssigned", json_object_new_boolean(true));
|
||
+ json_object_object_add(dhcp6cMsg, "prefixCmd", json_object_new_int(cmd));
|
||
+ json_object_object_add(dhcp6cMsg, "prefix", json_object_new_string(prefix));
|
||
+ json_object_object_add(dhcp6cMsg, "prefixPltime", json_object_new_int(sp->prefix.pltime));
|
||
+ json_object_object_add(dhcp6cMsg, "prefixVltime", json_object_new_int(sp->prefix.vltime));
|
||
+
|
||
+ return;
|
||
+}
|
||
diff -Naur wide-dhcpv6-20080615.orig/y.tab.h wide-dhcpv6-20080615/y.tab.h
|
||
--- wide-dhcpv6-20080615.orig/y.tab.h 2007-03-21 17:53:10.000000000 +0800
|
||
+++ wide-dhcpv6-20080615/y.tab.h 1970-01-01 08:00:00.000000000 +0800
|
||
@@ -1,193 +0,0 @@
|
||
-/* A Bison parser, made by GNU Bison 2.1. */
|
||
-
|
||
-/* Skeleton parser for Yacc-like parsing with Bison,
|
||
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||
-
|
||
- This program is free software; you can redistribute it and/or modify
|
||
- it under the terms of the GNU General Public License as published by
|
||
- the Free Software Foundation; either version 2, or (at your option)
|
||
- any later version.
|
||
-
|
||
- This program is distributed in the hope that it will be useful,
|
||
- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
- GNU General Public License for more details.
|
||
-
|
||
- You should have received a copy of the GNU General Public License
|
||
- along with this program; if not, write to the Free Software
|
||
- Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||
- Boston, MA 02110-1301, USA. */
|
||
-
|
||
-/* As a special exception, when this file is copied by Bison into a
|
||
- Bison output file, you may use that output file without restriction.
|
||
- This special exception was added by the Free Software Foundation
|
||
- in version 1.24 of Bison. */
|
||
-
|
||
-/* Tokens. */
|
||
-#ifndef YYTOKENTYPE
|
||
-# define YYTOKENTYPE
|
||
- /* Put the tokens into the symbol table, so that GDB and other debuggers
|
||
- know about them. */
|
||
- enum yytokentype {
|
||
- INTERFACE = 258,
|
||
- IFNAME = 259,
|
||
- PREFIX_INTERFACE = 260,
|
||
- SLA_ID = 261,
|
||
- SLA_LEN = 262,
|
||
- DUID_ID = 263,
|
||
- ID_ASSOC = 264,
|
||
- IA_PD = 265,
|
||
- IAID = 266,
|
||
- IA_NA = 267,
|
||
- ADDRESS = 268,
|
||
- REQUEST = 269,
|
||
- SEND = 270,
|
||
- ALLOW = 271,
|
||
- PREFERENCE = 272,
|
||
- HOST = 273,
|
||
- HOSTNAME = 274,
|
||
- DUID = 275,
|
||
- OPTION = 276,
|
||
- RAPID_COMMIT = 277,
|
||
- DNS_SERVERS = 278,
|
||
- DNS_NAME = 279,
|
||
- NTP_SERVERS = 280,
|
||
- REFRESHTIME = 281,
|
||
- SIP_SERVERS = 282,
|
||
- SIP_NAME = 283,
|
||
- NIS_SERVERS = 284,
|
||
- NIS_NAME = 285,
|
||
- NISP_SERVERS = 286,
|
||
- NISP_NAME = 287,
|
||
- BCMCS_SERVERS = 288,
|
||
- BCMCS_NAME = 289,
|
||
- INFO_ONLY = 290,
|
||
- SCRIPT = 291,
|
||
- DELAYEDKEY = 292,
|
||
- AUTHENTICATION = 293,
|
||
- PROTOCOL = 294,
|
||
- ALGORITHM = 295,
|
||
- DELAYED = 296,
|
||
- RECONFIG = 297,
|
||
- HMACMD5 = 298,
|
||
- MONOCOUNTER = 299,
|
||
- AUTHNAME = 300,
|
||
- RDM = 301,
|
||
- KEY = 302,
|
||
- KEYINFO = 303,
|
||
- REALM = 304,
|
||
- KEYID = 305,
|
||
- SECRET = 306,
|
||
- KEYNAME = 307,
|
||
- EXPIRE = 308,
|
||
- ADDRPOOL = 309,
|
||
- POOLNAME = 310,
|
||
- RANGE = 311,
|
||
- TO = 312,
|
||
- ADDRESS_POOL = 313,
|
||
- INCLUDE = 314,
|
||
- NUMBER = 315,
|
||
- SLASH = 316,
|
||
- EOS = 317,
|
||
- BCL = 318,
|
||
- ECL = 319,
|
||
- STRING = 320,
|
||
- QSTRING = 321,
|
||
- PREFIX = 322,
|
||
- INFINITY = 323,
|
||
- COMMA = 324
|
||
- };
|
||
-#endif
|
||
-/* Tokens. */
|
||
-#define INTERFACE 258
|
||
-#define IFNAME 259
|
||
-#define PREFIX_INTERFACE 260
|
||
-#define SLA_ID 261
|
||
-#define SLA_LEN 262
|
||
-#define DUID_ID 263
|
||
-#define ID_ASSOC 264
|
||
-#define IA_PD 265
|
||
-#define IAID 266
|
||
-#define IA_NA 267
|
||
-#define ADDRESS 268
|
||
-#define REQUEST 269
|
||
-#define SEND 270
|
||
-#define ALLOW 271
|
||
-#define PREFERENCE 272
|
||
-#define HOST 273
|
||
-#define HOSTNAME 274
|
||
-#define DUID 275
|
||
-#define OPTION 276
|
||
-#define RAPID_COMMIT 277
|
||
-#define DNS_SERVERS 278
|
||
-#define DNS_NAME 279
|
||
-#define NTP_SERVERS 280
|
||
-#define REFRESHTIME 281
|
||
-#define SIP_SERVERS 282
|
||
-#define SIP_NAME 283
|
||
-#define NIS_SERVERS 284
|
||
-#define NIS_NAME 285
|
||
-#define NISP_SERVERS 286
|
||
-#define NISP_NAME 287
|
||
-#define BCMCS_SERVERS 288
|
||
-#define BCMCS_NAME 289
|
||
-#define INFO_ONLY 290
|
||
-#define SCRIPT 291
|
||
-#define DELAYEDKEY 292
|
||
-#define AUTHENTICATION 293
|
||
-#define PROTOCOL 294
|
||
-#define ALGORITHM 295
|
||
-#define DELAYED 296
|
||
-#define RECONFIG 297
|
||
-#define HMACMD5 298
|
||
-#define MONOCOUNTER 299
|
||
-#define AUTHNAME 300
|
||
-#define RDM 301
|
||
-#define KEY 302
|
||
-#define KEYINFO 303
|
||
-#define REALM 304
|
||
-#define KEYID 305
|
||
-#define SECRET 306
|
||
-#define KEYNAME 307
|
||
-#define EXPIRE 308
|
||
-#define ADDRPOOL 309
|
||
-#define POOLNAME 310
|
||
-#define RANGE 311
|
||
-#define TO 312
|
||
-#define ADDRESS_POOL 313
|
||
-#define INCLUDE 314
|
||
-#define NUMBER 315
|
||
-#define SLASH 316
|
||
-#define EOS 317
|
||
-#define BCL 318
|
||
-#define ECL 319
|
||
-#define STRING 320
|
||
-#define QSTRING 321
|
||
-#define PREFIX 322
|
||
-#define INFINITY 323
|
||
-#define COMMA 324
|
||
-
|
||
-
|
||
-
|
||
-
|
||
-#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
|
||
-#line 126 "cfparse.y"
|
||
-typedef union YYSTYPE {
|
||
- long long num;
|
||
- char* str;
|
||
- struct cf_list *list;
|
||
- struct dhcp6_prefix *prefix;
|
||
- struct dhcp6_range *range;
|
||
- struct dhcp6_poolspec *pool;
|
||
-} YYSTYPE;
|
||
-/* Line 1447 of yacc.c. */
|
||
-#line 185 "y.tab.h"
|
||
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
|
||
-# define YYSTYPE_IS_DECLARED 1
|
||
-# define YYSTYPE_IS_TRIVIAL 1
|
||
-#endif
|
||
-
|
||
-extern YYSTYPE yylval;
|
||
-
|
||
-
|
||
-
|