ISC DHCP  4.4.1
A reference DHCPv4 and DHCPv6 implementation
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
parse.c File Reference
#include "dhcpd.h"
#include <isc/util.h>
#include <syslog.h>

Go to the source code of this file.

Functions

void add_enumeration (struct enumeration *enumeration)
 
struct enumerationfind_enumeration (const char *name, int length)
 
struct enumeration_valuefind_enumeration_value (const char *name, int length, unsigned *widthp, const char *value)
 
void skip_to_semi (struct parse *cfile)
 
void skip_to_rbrace (struct parse *cfile, int brace_count)
 
int parse_semi (struct parse *cfile)
 
int parse_string (struct parse *cfile, char **sptr, unsigned *lptr)
 
char * parse_host_name (struct parse *cfile)
 
int parse_ip_addr_or_hostname (struct expression **expr, struct parse *cfile, int uniform)
 
int parse_ip_addr (struct parse *cfile, struct iaddr *addr)
 
int parse_destination_descriptor (struct parse *cfile, struct iaddr *addr)
 
int parse_ip6_addr (struct parse *cfile, struct iaddr *addr)
 
int parse_ip6_addr_expr (struct expression **expr, struct parse *cfile)
 
int parse_ip6_prefix (struct parse *cfile, struct iaddr *addr, u_int8_t *plen)
 
 if (parse_ip_addr(cfile,&match->addr))
 
 parse_warn (cfile,"expecting ip-address or ip-address/prefixlen")
 
void parse_hardware_param (struct parse *cfile, struct hardware *hardware)
 
void parse_lease_time (struct parse *cfile, TIME *timep)
 
unsigned char * parse_numeric_aggregate (struct parse *cfile, unsigned char *buf, unsigned *max, int separator, int base, unsigned size)
 
void convert_num (struct parse *cfile, unsigned char *buf, const char *str, int base, unsigned size)
 
 if (token==NEVER)
 
 if (token!=NUMBER)
 
 return (MAX_TIME)
 
 return ((TIME) guess)
 
 return (guess)
 
 if (!is_identifier(token))
 
 log_fatal ("no memory for uname information.")
 
 strcpy (uname, val)
 
 option_name_hash_lookup (opt, universe->name_hash, val, 0, MDL)
 
 if (option)
 
else if (strncasecmp(val,"unknown-", 8)==0)
 
else if (allocate)
 
 skip_to_semi (cfile)
 
 dfree (uname, MDL)
 
void parse_option_space_decl (struct parse *cfile)
 
int parse_option_code_definition (struct parse *cfile, struct option *option)
 
int parse_base64 (struct data_string *data, struct parse *cfile)
 
int parse_cshl (struct data_string *data, struct parse *cfile)
 
int parse_executable_statements (struct executable_statement **statements, struct parse *cfile, int *lose, enum expression_context case_context)
 
int parse_executable_statement (struct executable_statement **result, struct parse *cfile, int *lose, enum expression_context case_context)
 
int parse_zone (struct dns_zone *zone, struct parse *cfile)
 
int parse_key (struct parse *cfile)
 
int parse_on_statement (struct executable_statement **result, struct parse *cfile, int *lose)
 
int parse_switch_statement (struct executable_statement **result, struct parse *cfile, int *lose)
 
int parse_case_statement (struct executable_statement **result, struct parse *cfile, int *lose, enum expression_context case_context)
 
int parse_if_statement (struct executable_statement **result, struct parse *cfile, int *lose)
 
int parse_boolean_expression (struct expression **expr, struct parse *cfile, int *lose)
 
int parse_boolean (struct parse *cfile)
 
int parse_data_expression (struct expression **expr, struct parse *cfile, int *lose)
 
int parse_numeric_expression (struct expression **expr, struct parse *cfile, int *lose)
 
int parse_non_binary (struct expression **expr, struct parse *cfile, int *lose, enum expression_context context)
 
int parse_expression (struct expression **expr, struct parse *cfile, int *lose, enum expression_context context, struct expression **plhs, enum expr_op binop)
 
int parse_option_data (struct expression **expr, struct parse *cfile, int lookups, struct option *option)
 
int parse_option_statement (struct executable_statement **result, struct parse *cfile, int lookups, struct option *option, enum statement_op op)
 
int parse_option_token (struct expression **rv, struct parse *cfile, const char **fmt, struct expression *expr, int uniform, int lookups)
 
int parse_option_decl (struct option_cache **oc, struct parse *cfile)
 
int parse_X (struct parse *cfile, u_int8_t *buf, unsigned max)
 
int parse_warn (struct parse *cfile, const char *fmt,...)
 
struct expressionparse_domain_list (struct parse *cfile, int compress)
 

Variables

struct collection default_collection = { NULL, "default", NULL }
 
struct collectioncollections = &default_collection
 
struct enumerationenumerations
 
int struct parsecfile
 
struct iaddrmatchmatch
 
enum dhcp_token token
 
int prefixlen
 
int fflen
 
unsigned char newval
 
unsigned char warnmask =0
 
 return
 
int tzoff
 
int year = atoi(val)
 
int mon = atoi(val) - 1
 
int mday = atoi(val)
 
int hour = atoi(val)
 
int min = atoi(val)
 
int sec = atoi(val)
 
const char * val
 
 guess
 
int allocate
 
intknown
 
struct option ** opt
 
char * uname = dmalloc (strlen (val) + 1, MDL)
 
struct universeuniverse = &dhcp_universe
 
struct optionoption = *opt
 
unsigned code
 
return DHCP_R_INVALIDARG
 
 else
 
return ISC_R_NOTFOUND
 
return ISC_R_SUCCESS
 

Function Documentation

void add_enumeration ( struct enumeration enumeration)

Definition at line 41 of file parse.c.

void convert_num ( struct parse cfile,
unsigned char *  buf,
const char *  str,
int  base,
unsigned  size 
)

Definition at line 840 of file parse.c.

dfree ( uname  ,
MDL   
)
struct enumeration* find_enumeration ( const char *  name,
int  length 
)

Definition at line 47 of file parse.c.

struct enumeration_value* find_enumeration_value ( const char *  name,
int  length,
unsigned *  widthp,
const char *  value 
)

Definition at line 58 of file parse.c.

Definition at line 532 of file parse.c.

if ( token  = NEVER)

Definition at line 990 of file parse.c.

else if ( token!  = NUMBER)

Definition at line 1013 of file parse.c.

if ( is_identifiertoken)

Definition at line 1225 of file parse.c.

if ( option  )

Definition at line 1271 of file parse.c.

else if ( strncasecmp(val,"unknown-", 8)  = = 0)

Definition at line 1280 of file parse.c.

else if ( allocate  )

Definition at line 1327 of file parse.c.

log_fatal ( "no memory for uname information."  )
option_name_hash_lookup ( opt  ,
universe->  name_hash,
val  ,
,
MDL   
)
int parse_base64 ( struct data_string data,
struct parse cfile 
)

Definition at line 1899 of file parse.c.

int parse_boolean ( struct parse cfile)

Definition at line 3498 of file parse.c.

int parse_boolean_expression ( struct expression **  expr,
struct parse cfile,
int lose 
)

Definition at line 3475 of file parse.c.

int parse_case_statement ( struct executable_statement **  result,
struct parse cfile,
int lose,
enum expression_context  case_context 
)

Definition at line 3292 of file parse.c.

int parse_cshl ( struct data_string data,
struct parse cfile 
)

Definition at line 2040 of file parse.c.

int parse_data_expression ( struct expression **  expr,
struct parse cfile,
int lose 
)

Definition at line 3542 of file parse.c.

int parse_destination_descriptor ( struct parse cfile,
struct iaddr addr 
)

Definition at line 354 of file parse.c.

struct expression* parse_domain_list ( struct parse cfile,
int  compress 
)

Definition at line 5674 of file parse.c.

int parse_executable_statement ( struct executable_statement **  result,
struct parse cfile,
int lose,
enum expression_context  case_context 
)

Definition at line 2133 of file parse.c.

int parse_executable_statements ( struct executable_statement **  statements,
struct parse cfile,
int lose,
enum expression_context  case_context 
)

Definition at line 2117 of file parse.c.

int parse_expression ( struct expression **  expr,
struct parse cfile,
int lose,
enum expression_context  context,
struct expression **  plhs,
enum expr_op  binop 
)

Definition at line 4501 of file parse.c.

void parse_hardware_param ( struct parse cfile,
struct hardware hardware 
)

Definition at line 615 of file parse.c.

char* parse_host_name ( struct parse cfile)

Definition at line 196 of file parse.c.

int parse_if_statement ( struct executable_statement **  result,
struct parse cfile,
int lose 
)

Definition at line 3339 of file parse.c.

int parse_ip6_addr ( struct parse cfile,
struct iaddr addr 
)

Definition at line 405 of file parse.c.

int parse_ip6_addr_expr ( struct expression **  expr,
struct parse cfile 
)

Definition at line 465 of file parse.c.

int parse_ip6_prefix ( struct parse cfile,
struct iaddr addr,
u_int8_t *  plen 
)

Definition at line 479 of file parse.c.

int parse_ip_addr ( struct parse cfile,
struct iaddr addr 
)

Definition at line 336 of file parse.c.

int parse_ip_addr_or_hostname ( struct expression **  expr,
struct parse cfile,
int  uniform 
)

Definition at line 268 of file parse.c.

int parse_key ( struct parse cfile)

Definition at line 2996 of file parse.c.

void parse_lease_time ( struct parse cfile,
TIME timep 
)

Definition at line 690 of file parse.c.

int parse_non_binary ( struct expression **  expr,
struct parse cfile,
int lose,
enum expression_context  context 
)

Definition at line 3592 of file parse.c.

unsigned char* parse_numeric_aggregate ( struct parse cfile,
unsigned char *  buf,
unsigned *  max,
int  separator,
int  base,
unsigned  size 
)

Definition at line 734 of file parse.c.

int parse_numeric_expression ( struct expression **  expr,
struct parse cfile,
int lose 
)

Definition at line 3569 of file parse.c.

int parse_on_statement ( struct executable_statement **  result,
struct parse cfile,
int lose 
)

Definition at line 3144 of file parse.c.

int parse_option_code_definition ( struct parse cfile,
struct option option 
)

Definition at line 1572 of file parse.c.

int parse_option_data ( struct expression **  expr,
struct parse cfile,
int  lookups,
struct option option 
)

Definition at line 4812 of file parse.c.

int parse_option_decl ( struct option_cache **  oc,
struct parse cfile 
)

Definition at line 5267 of file parse.c.

void parse_option_space_decl ( struct parse cfile)

Definition at line 1349 of file parse.c.

int parse_option_statement ( struct executable_statement **  result,
struct parse cfile,
int  lookups,
struct option option,
enum statement_op  op 
)

Definition at line 4919 of file parse.c.

int parse_option_token ( struct expression **  rv,
struct parse cfile,
const char **  fmt,
struct expression expr,
int  uniform,
int  lookups 
)

Definition at line 4978 of file parse.c.

int parse_semi ( struct parse cfile)

Definition at line 139 of file parse.c.

int parse_string ( struct parse cfile,
char **  sptr,
unsigned *  lptr 
)

Definition at line 156 of file parse.c.

int parse_switch_statement ( struct executable_statement **  result,
struct parse cfile,
int lose 
)

Definition at line 3224 of file parse.c.

parse_warn ( cfile  ,
"expecting ip-address or ip-address/prefixlen  
)
int parse_warn ( struct parse cfile,
const char *  fmt,
  ... 
)

Definition at line 5619 of file parse.c.

int parse_X ( struct parse cfile,
u_int8_t *  buf,
unsigned  max 
)

Definition at line 5570 of file parse.c.

int parse_zone ( struct dns_zone zone,
struct parse cfile 
)

Definition at line 2816 of file parse.c.

return ( MAX_TIME  )
return ( (TIME guess)
return ( guess  )
void skip_to_rbrace ( struct parse cfile,
int  brace_count 
)

Definition at line 98 of file parse.c.

void skip_to_semi ( struct parse cfile)

Definition at line 81 of file parse.c.

skip_to_semi ( cfile  )
strcpy ( uname  ,
val   
)

Variable Documentation

int allocate

Definition at line 1210 of file parse.c.

isc_result_t struct parse * cfile

Definition at line 523 of file parse.c.

unsigned code

Definition at line 1219 of file parse.c.

struct collection* collections = &default_collection

Definition at line 34 of file parse.c.

struct collection default_collection = { NULL, "default", NULL }

Definition at line 33 of file parse.c.

return DHCP_R_INVALIDARG

Definition at line 1222 of file parse.c.

else
Initial value:
{
const char * val
Definition: parse.c:983
char * uname
Definition: parse.c:1216

Definition at line 1259 of file parse.c.

struct enumeration* enumerations

Definition at line 39 of file parse.c.

int fflen

Definition at line 529 of file parse.c.

guess
Initial value:
= ((((((365 * (year - 70) +
(year - 69) / 4 +
(mon
? months [mon - 1]
: 0) +
(mon > 1 &&
!((year - 72) & 3)) +
mday - 1) * 24) +
hour) * 60) +
min) * 60) + sec + tzoff
int mon
Definition: parse.c:980
int year
Definition: parse.c:980
int mday
Definition: parse.c:980
int tzoff
Definition: parse.c:980
int hour
Definition: parse.c:980
int sec
Definition: parse.c:980
int min
Definition: parse.c:980

Definition at line 1159 of file parse.c.

hour = atoi(val)

Definition at line 980 of file parse.c.

return ISC_R_NOTFOUND

Definition at line 1336 of file parse.c.

return ISC_R_SUCCESS

Definition at line 1341 of file parse.c.

int* known

Definition at line 1211 of file parse.c.

struct iaddrmatch* match

Definition at line 524 of file parse.c.

mday = atoi(val)

Definition at line 980 of file parse.c.

min = atoi(val)

Definition at line 980 of file parse.c.

mon = atoi(val) - 1

Definition at line 980 of file parse.c.

unsigned char newval

Definition at line 530 of file parse.c.

struct option** opt

Definition at line 1212 of file parse.c.

option = *opt

Definition at line 1218 of file parse.c.

int prefixlen

Definition at line 528 of file parse.c.

return

Definition at line 605 of file parse.c.

sec = atoi(val)

Definition at line 980 of file parse.c.

enum dhcp_token token
Initial value:
{
const char *val, *orig
const char * val
Definition: parse.c:983

Definition at line 527 of file parse.c.

tzoff
Initial value:
{
int guess
guess
Definition: parse.c:1159

Definition at line 980 of file parse.c.

uname = dmalloc (strlen (val) + 1, MDL)

Definition at line 1216 of file parse.c.

Definition at line 1217 of file parse.c.

skip_token & val

Definition at line 983 of file parse.c.

unsigned char warnmask =0

Definition at line 530 of file parse.c.

year = atoi(val)

Definition at line 980 of file parse.c.