ISC DHCP 4.4.3-P1
A reference DHCPv4 and DHCPv6 implementation
 
Loading...
Searching...
No Matches
parse.c File Reference
#include "keama.h"
#include <sys/types.h>
#include <arpa/inet.h>
#include <ctype.h>
#include <netdb.h>
#include <stdlib.h>
#include <string.h>

Go to the source code of this file.

Macros

#define FORMERR   1
 
#define ISC_R_SUCCESS   0
 
#define DHCP_R_NOTAUTH   ((6 << 16) + 21)
 
#define ISC_R_NOTIMPLEMENTED   27
 
#define DHCP_R_NOTZONE   ((6 << 16) + 22)
 
#define DHCP_R_NXDOMAIN   ((6 << 16) + 15)
 
#define DHCP_R_NXRRSET   ((6 << 16) + 20)
 
#define DHCP_R_REFUSED   ((6 << 16) + 17)
 
#define DHCP_R_SERVFAIL   ((6 << 16) + 14)
 
#define DHCP_R_YXDOMAIN   ((6 << 16) + 18)
 
#define DHCP_R_YXRRSET   ((6 << 16) + 19)
 
#define S_INIT   2
 
#define S_REBOOTING   1
 
#define S_SELECTING   3
 
#define S_REQUESTING   4
 
#define S_BOUND   5
 
#define S_RENEWING   6
 
#define S_REBINDING   7
 

Functions

void skip_to_semi (struct parse *cfile)
 
void skip_to_rbrace (struct parse *cfile, int brace_count)
 
void parse_semi (struct parse *cfile)
 
void parse_string (struct parse *cfile, char **sptr, unsigned *lptr)
 
struct stringparse_host_name (struct parse *cfile)
 
struct stringparse_ip_addr_or_hostname (struct parse *cfile, isc_boolean_t check_multi)
 
struct stringparse_ip_addr (struct parse *cfile)
 
struct stringparse_ip6_addr (struct parse *cfile)
 
struct stringparse_ip6_addr_txt (struct parse *cfile)
 
struct elementparse_hardware_param (struct parse *cfile)
 
struct stringparse_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)
 
struct optionparse_option_name (struct parse *cfile, isc_boolean_t allocate, isc_boolean_t *known)
 
void parse_option_space_decl (struct parse *cfile)
 
void parse_option_code_definition (struct parse *cfile, struct option *option)
 
void parse_vendor_code_definition (struct parse *cfile, struct option *option)
 
struct stringconvert_format (const char *fmt, isc_boolean_t *is_array, isc_boolean_t *encapsulate)
 
struct stringparse_base64 (struct parse *cfile)
 
struct stringparse_cshl (struct parse *cfile)
 
struct stringparse_hexa (struct parse *cfile)
 
isc_boolean_t parse_executable_statements (struct element *statements, struct parse *cfile, isc_boolean_t *lose, enum expression_context case_context)
 
isc_boolean_t parse_executable_statement (struct element *result, struct parse *cfile, isc_boolean_t *lose, enum expression_context case_context, isc_boolean_t direct)
 
isc_boolean_t parse_zone (struct element *zone, struct parse *cfile)
 
isc_boolean_t parse_key (struct element *result, struct parse *cfile)
 
isc_boolean_t parse_on_statement (struct element *result, struct parse *cfile, isc_boolean_t *lose)
 
isc_boolean_t parse_switch_statement (struct element *result, struct parse *cfile, isc_boolean_t *lose)
 
isc_boolean_t parse_case_statement (struct element *result, struct parse *cfile, isc_boolean_t *lose, enum expression_context case_context)
 
isc_boolean_t parse_if_statement (struct element *result, struct parse *cfile, isc_boolean_t *lose)
 
isc_boolean_t parse_boolean_expression (struct element *expr, struct parse *cfile, isc_boolean_t *lose)
 
isc_boolean_t parse_boolean (struct parse *cfile)
 
isc_boolean_t parse_data_expression (struct element *expr, struct parse *cfile, isc_boolean_t *lose)
 
isc_boolean_t parse_numeric_expression (struct element *expr, struct parse *cfile, isc_boolean_t *lose)
 
isc_boolean_t parse_non_binary (struct element *expr, struct parse *cfile, isc_boolean_t *lose, enum expression_context context)
 
isc_boolean_t parse_expression (struct element *expr, struct parse *cfile, isc_boolean_t *lose, enum expression_context context, struct element *lhs, enum expr_op binop)
 
struct stringescape_option_string (unsigned len, const char *val, isc_boolean_t *require_binary, isc_boolean_t *modified)
 
isc_boolean_t parse_option_data (struct element *expr, struct parse *cfile, struct option *option)
 
isc_boolean_t parse_option_binary (struct element *expr, struct parse *cfile, struct option *option, isc_boolean_t ambiguous)
 
struct stringparse_option_textbin (struct parse *cfile, struct option *option)
 
isc_boolean_t parse_option_statement (struct element *result, struct parse *cfile, struct option *option, enum statement_op op)
 
struct stringparse_option_token (struct parse *cfile, const char *fmt, isc_boolean_t *require_binary, isc_boolean_t *canon_bool, isc_boolean_t *modified)
 
struct stringparse_option_token_binary (struct parse *cfile, const char *fmt)
 
struct stringparse_domain_list (struct parse *cfile, isc_boolean_t binary)
 
isc_boolean_t parse_config_data (struct element *expr, struct parse *cfile, struct option *option)
 
isc_boolean_t parse_config_statement (struct element *result, struct parse *cfile, struct option *option, enum statement_op op)
 
isc_boolean_t is_boolean_expression (struct element *expr)
 
isc_boolean_t is_data_expression (struct element *expr)
 
isc_boolean_t is_numeric_expression (struct element *expr)
 
int expr_precedence (enum expr_op op, struct element *expr)
 

Macro Definition Documentation

◆ DHCP_R_NOTAUTH

#define DHCP_R_NOTAUTH   ((6 << 16) + 21)

◆ DHCP_R_NOTZONE

#define DHCP_R_NOTZONE   ((6 << 16) + 22)

◆ DHCP_R_NXDOMAIN

#define DHCP_R_NXDOMAIN   ((6 << 16) + 15)

◆ DHCP_R_NXRRSET

#define DHCP_R_NXRRSET   ((6 << 16) + 20)

◆ DHCP_R_REFUSED

#define DHCP_R_REFUSED   ((6 << 16) + 17)

◆ DHCP_R_SERVFAIL

#define DHCP_R_SERVFAIL   ((6 << 16) + 14)

◆ DHCP_R_YXDOMAIN

#define DHCP_R_YXDOMAIN   ((6 << 16) + 18)

◆ DHCP_R_YXRRSET

#define DHCP_R_YXRRSET   ((6 << 16) + 19)

◆ FORMERR

#define FORMERR   1

◆ ISC_R_NOTIMPLEMENTED

#define ISC_R_NOTIMPLEMENTED   27

◆ ISC_R_SUCCESS

#define ISC_R_SUCCESS   0

◆ S_BOUND

#define S_BOUND   5

◆ S_INIT

#define S_INIT   2

◆ S_REBINDING

#define S_REBINDING   7

◆ S_REBOOTING

#define S_REBOOTING   1

◆ S_RENEWING

#define S_RENEWING   6

◆ S_REQUESTING

#define S_REQUESTING   4

◆ S_SELECTING

#define S_SELECTING   3

Function Documentation

◆ convert_format()

struct string * convert_format ( const char * fmt,
isc_boolean_t * is_array,
isc_boolean_t * encapsulate )

Definition at line 1338 of file parse.c.

◆ convert_num()

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

Definition at line 527 of file parse.c.

◆ escape_option_string()

struct string * escape_option_string ( unsigned len,
const char * val,
isc_boolean_t * require_binary,
isc_boolean_t * modified )

Definition at line 3896 of file parse.c.

◆ expr_precedence()

int expr_precedence ( enum expr_op op,
struct element * expr )

Definition at line 6135 of file parse.c.

◆ is_boolean_expression()

isc_boolean_t is_boolean_expression ( struct element * expr)

Definition at line 5701 of file parse.c.

◆ is_data_expression()

isc_boolean_t is_data_expression ( struct element * expr)

Definition at line 5722 of file parse.c.

◆ is_numeric_expression()

isc_boolean_t is_numeric_expression ( struct element * expr)

Definition at line 5758 of file parse.c.

◆ parse_base64()

struct string * parse_base64 ( struct parse * cfile)

Definition at line 1434 of file parse.c.

◆ parse_boolean()

isc_boolean_t parse_boolean ( struct parse * cfile)

Definition at line 2605 of file parse.c.

◆ parse_boolean_expression()

isc_boolean_t parse_boolean_expression ( struct element * expr,
struct parse * cfile,
isc_boolean_t * lose )

Definition at line 2586 of file parse.c.

◆ parse_case_statement()

isc_boolean_t parse_case_statement ( struct element * result,
struct parse * cfile,
isc_boolean_t * lose,
enum expression_context case_context )

Definition at line 2437 of file parse.c.

◆ parse_config_data()

isc_boolean_t parse_config_data ( struct element * expr,
struct parse * cfile,
struct option * option )

Definition at line 4692 of file parse.c.

◆ parse_config_statement()

isc_boolean_t parse_config_statement ( struct element * result,
struct parse * cfile,
struct option * option,
enum statement_op op )

Definition at line 4831 of file parse.c.

◆ parse_cshl()

struct string * parse_cshl ( struct parse * cfile)

Definition at line 1489 of file parse.c.

◆ parse_data_expression()

isc_boolean_t parse_data_expression ( struct element * expr,
struct parse * cfile,
isc_boolean_t * lose )

Definition at line 2645 of file parse.c.

◆ parse_domain_list()

struct string * parse_domain_list ( struct parse * cfile,
isc_boolean_t binary )

Definition at line 4646 of file parse.c.

◆ parse_executable_statement()

isc_boolean_t parse_executable_statement ( struct element * result,
struct parse * cfile,
isc_boolean_t * lose,
enum expression_context case_context,
isc_boolean_t direct )

Definition at line 1590 of file parse.c.

◆ parse_executable_statements()

isc_boolean_t parse_executable_statements ( struct element * statements,
struct parse * cfile,
isc_boolean_t * lose,
enum expression_context case_context )

Definition at line 1566 of file parse.c.

◆ parse_expression()

isc_boolean_t parse_expression ( struct element * expr,
struct parse * cfile,
isc_boolean_t * lose,
enum expression_context context,
struct element * lhs,
enum expr_op binop )

Definition at line 3617 of file parse.c.

◆ parse_hardware_param()

struct element * parse_hardware_param ( struct parse * cfile)

Definition at line 395 of file parse.c.

◆ parse_hexa()

struct string * parse_hexa ( struct parse * cfile)

Definition at line 1524 of file parse.c.

◆ parse_host_name()

struct string * parse_host_name ( struct parse * cfile)

Definition at line 174 of file parse.c.

◆ parse_if_statement()

isc_boolean_t parse_if_statement ( struct element * result,
struct parse * cfile,
isc_boolean_t * lose )

Definition at line 2477 of file parse.c.

◆ parse_ip6_addr()

struct string * parse_ip6_addr ( struct parse * cfile)

Definition at line 325 of file parse.c.

◆ parse_ip6_addr_txt()

struct string * parse_ip6_addr_txt ( struct parse * cfile)

Definition at line 379 of file parse.c.

◆ parse_ip_addr()

struct string * parse_ip_addr ( struct parse * cfile)

Definition at line 291 of file parse.c.

◆ parse_ip_addr_or_hostname()

struct string * parse_ip_addr_or_hostname ( struct parse * cfile,
isc_boolean_t check_multi )

Definition at line 215 of file parse.c.

◆ parse_key()

isc_boolean_t parse_key ( struct element * result,
struct parse * cfile )

Definition at line 2210 of file parse.c.

◆ parse_non_binary()

isc_boolean_t parse_non_binary ( struct element * expr,
struct parse * cfile,
isc_boolean_t * lose,
enum expression_context context )

Definition at line 2687 of file parse.c.

◆ parse_numeric_aggregate()

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

Definition at line 465 of file parse.c.

◆ parse_numeric_expression()

isc_boolean_t parse_numeric_expression ( struct element * expr,
struct parse * cfile,
isc_boolean_t * lose )

Definition at line 2668 of file parse.c.

◆ parse_on_statement()

isc_boolean_t parse_on_statement ( struct element * result,
struct parse * cfile,
isc_boolean_t * lose )

Definition at line 2309 of file parse.c.

◆ parse_option_binary()

isc_boolean_t parse_option_binary ( struct element * expr,
struct parse * cfile,
struct option * option,
isc_boolean_t ambiguous )

Definition at line 4047 of file parse.c.

◆ parse_option_code_definition()

void parse_option_code_definition ( struct parse * cfile,
struct option * option )

Definition at line 935 of file parse.c.

◆ parse_option_data()

isc_boolean_t parse_option_data ( struct element * expr,
struct parse * cfile,
struct option * option )

Definition at line 3929 of file parse.c.

◆ parse_option_name()

struct option * parse_option_name ( struct parse * cfile,
isc_boolean_t allocate,
isc_boolean_t * known )

Definition at line 643 of file parse.c.

◆ parse_option_space_decl()

void parse_option_space_decl ( struct parse * cfile)

Definition at line 769 of file parse.c.

◆ parse_option_statement()

isc_boolean_t parse_option_statement ( struct element * result,
struct parse * cfile,
struct option * option,
enum statement_op op )

Definition at line 4211 of file parse.c.

◆ parse_option_textbin()

struct string * parse_option_textbin ( struct parse * cfile,
struct option * option )

Definition at line 4169 of file parse.c.

◆ parse_option_token()

struct string * parse_option_token ( struct parse * cfile,
const char * fmt,
isc_boolean_t * require_binary,
isc_boolean_t * canon_bool,
isc_boolean_t * modified )

Definition at line 4388 of file parse.c.

◆ parse_option_token_binary()

struct string * parse_option_token_binary ( struct parse * cfile,
const char * fmt )

Definition at line 4511 of file parse.c.

◆ parse_semi()

void parse_semi ( struct parse * cfile)

Definition at line 131 of file parse.c.

◆ parse_string()

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

Definition at line 144 of file parse.c.

◆ parse_switch_statement()

isc_boolean_t parse_switch_statement ( struct element * result,
struct parse * cfile,
isc_boolean_t * lose )

Definition at line 2375 of file parse.c.

◆ parse_vendor_code_definition()

void parse_vendor_code_definition ( struct parse * cfile,
struct option * option )

Definition at line 1283 of file parse.c.

◆ parse_zone()

isc_boolean_t parse_zone ( struct element * zone,
struct parse * cfile )

Definition at line 2098 of file parse.c.

◆ skip_to_rbrace()

void skip_to_rbrace ( struct parse * cfile,
int brace_count )

Definition at line 94 of file parse.c.

◆ skip_to_semi()

void skip_to_semi ( struct parse * cfile)

Definition at line 77 of file parse.c.