Changeset View
Changeset View
Standalone View
Standalone View
usr.sbin/ctld/parse.y
Show All 35 Lines | |||||
#include <sys/types.h> | #include <sys/types.h> | ||||
#include <sys/stat.h> | #include <sys/stat.h> | ||||
#include <assert.h> | #include <assert.h> | ||||
#include <stdio.h> | #include <stdio.h> | ||||
#include <stdlib.h> | #include <stdlib.h> | ||||
#include <string.h> | #include <string.h> | ||||
#include "ctld.h" | #include "ctld.h" | ||||
#include <netinet/in.h> | |||||
#include <netinet/ip.h> | |||||
extern FILE *yyin; | extern FILE *yyin; | ||||
extern char *yytext; | extern char *yytext; | ||||
extern int lineno; | extern int lineno; | ||||
static struct conf *conf = NULL; | static struct conf *conf = NULL; | ||||
static struct auth_group *auth_group = NULL; | static struct auth_group *auth_group = NULL; | ||||
static struct portal_group *portal_group = NULL; | static struct portal_group *portal_group = NULL; | ||||
static struct target *target = NULL; | static struct target *target = NULL; | ||||
static struct lun *lun = NULL; | static struct lun *lun = NULL; | ||||
extern void yyerror(const char *); | extern void yyerror(const char *); | ||||
extern int yylex(void); | extern int yylex(void); | ||||
extern void yyrestart(FILE *); | extern void yyrestart(FILE *); | ||||
%} | %} | ||||
%token ALIAS AUTH_GROUP AUTH_TYPE BACKEND BLOCKSIZE CHAP CHAP_MUTUAL | %token ALIAS AUTH_GROUP AUTH_TYPE BACKEND BLOCKSIZE CHAP CHAP_MUTUAL | ||||
%token CLOSING_BRACKET CTL_LUN DEBUG DEVICE_ID DEVICE_TYPE | %token CLOSING_BRACKET CTL_LUN DEBUG DEVICE_ID DEVICE_TYPE | ||||
%token DISCOVERY_AUTH_GROUP DISCOVERY_FILTER FOREIGN | %token DISCOVERY_AUTH_GROUP DISCOVERY_FILTER DSCP FOREIGN | ||||
%token INITIATOR_NAME INITIATOR_PORTAL ISNS_SERVER ISNS_PERIOD ISNS_TIMEOUT | %token INITIATOR_NAME INITIATOR_PORTAL ISNS_SERVER ISNS_PERIOD ISNS_TIMEOUT | ||||
%token LISTEN LISTEN_ISER LUN MAXPROC OFFLOAD OPENING_BRACKET OPTION | %token LISTEN LISTEN_ISER LUN MAXPROC OFFLOAD OPENING_BRACKET OPTION | ||||
%token PATH PIDFILE PORT PORTAL_GROUP REDIRECT SEMICOLON SERIAL SIZE STR | %token PATH PIDFILE PORT PORTAL_GROUP REDIRECT SEMICOLON SERIAL SIZE STR | ||||
%token TAG TARGET TIMEOUT | %token TAG TARGET TIMEOUT | ||||
%token AF11 AF12 AF13 AF21 AF22 AF23 AF31 AF32 AF33 AF41 AF42 AF43 | |||||
%token BE EF CS0 CS1 CS2 CS3 CS4 CS5 CS6 CS7 | |||||
%union | %union | ||||
{ | { | ||||
char *str; | char *str; | ||||
} | } | ||||
%token <str> STR | %token <str> STR | ||||
▲ Show 20 Lines • Show All 272 Lines • ▼ Show 20 Lines | portal_group_entry: | ||||
| | | | ||||
portal_group_offload | portal_group_offload | ||||
| | | | ||||
portal_group_option | portal_group_option | ||||
| | | | ||||
portal_group_redirect | portal_group_redirect | ||||
| | | | ||||
portal_group_tag | portal_group_tag | ||||
| | |||||
portal_group_dscp | |||||
; | ; | ||||
portal_group_discovery_auth_group: DISCOVERY_AUTH_GROUP STR | portal_group_discovery_auth_group: DISCOVERY_AUTH_GROUP STR | ||||
{ | { | ||||
if (portal_group->pg_discovery_auth_group != NULL) { | if (portal_group->pg_discovery_auth_group != NULL) { | ||||
log_warnx("discovery-auth-group for portal-group " | log_warnx("discovery-auth-group for portal-group " | ||||
"\"%s\" specified more than once", | "\"%s\" specified more than once", | ||||
portal_group->pg_name); | portal_group->pg_name); | ||||
▲ Show 20 Lines • Show All 93 Lines • ▼ Show 20 Lines | if (expand_number($2, &tmp) != 0) { | ||||
yyerror("invalid numeric value"); | yyerror("invalid numeric value"); | ||||
free($2); | free($2); | ||||
return (1); | return (1); | ||||
} | } | ||||
portal_group->pg_tag = tmp; | portal_group->pg_tag = tmp; | ||||
} | } | ||||
; | ; | ||||
portal_group_dscp | |||||
: DSCP STR | |||||
{ | |||||
uint64_t tmp; | |||||
if (strcmp($2, "0x") == 0) { | |||||
tmp = strtol($2 + 2, NULL, 16); | |||||
} else if (expand_number($2, &tmp) != 0) { | |||||
yyerror("invalid numeric value"); | |||||
free($2); | |||||
return(1); | |||||
} | |||||
if (tmp >= 0x40) { | |||||
yyerror("invalid dscp value"); | |||||
return(1); | |||||
} | |||||
portal_group->pg_dscp = tmp; | |||||
} | |||||
| DSCP BE { portal_group->pg_dscp = IPTOS_DSCP_CS0 ; } | |||||
| DSCP EF { portal_group->pg_dscp = IPTOS_DSCP_EF ; } | |||||
| DSCP CS0 { portal_group->pg_dscp = IPTOS_DSCP_CS0 ; } | |||||
| DSCP CS1 { portal_group->pg_dscp = IPTOS_DSCP_CS1 ; } | |||||
| DSCP CS2 { portal_group->pg_dscp = IPTOS_DSCP_CS2 ; } | |||||
| DSCP CS3 { portal_group->pg_dscp = IPTOS_DSCP_CS3 ; } | |||||
| DSCP CS4 { portal_group->pg_dscp = IPTOS_DSCP_CS4 ; } | |||||
| DSCP CS5 { portal_group->pg_dscp = IPTOS_DSCP_CS5 ; } | |||||
| DSCP CS6 { portal_group->pg_dscp = IPTOS_DSCP_CS6 ; } | |||||
| DSCP CS7 { portal_group->pg_dscp = IPTOS_DSCP_CS7 ; } | |||||
| DSCP AF11 { portal_group->pg_dscp = IPTOS_DSCP_AF11 ; } | |||||
| DSCP AF12 { portal_group->pg_dscp = IPTOS_DSCP_AF12 ; } | |||||
| DSCP AF13 { portal_group->pg_dscp = IPTOS_DSCP_AF13 ; } | |||||
| DSCP AF21 { portal_group->pg_dscp = IPTOS_DSCP_AF21 ; } | |||||
| DSCP AF22 { portal_group->pg_dscp = IPTOS_DSCP_AF22 ; } | |||||
| DSCP AF23 { portal_group->pg_dscp = IPTOS_DSCP_AF23 ; } | |||||
| DSCP AF31 { portal_group->pg_dscp = IPTOS_DSCP_AF31 ; } | |||||
| DSCP AF32 { portal_group->pg_dscp = IPTOS_DSCP_AF32 ; } | |||||
| DSCP AF33 { portal_group->pg_dscp = IPTOS_DSCP_AF33 ; } | |||||
| DSCP AF41 { portal_group->pg_dscp = IPTOS_DSCP_AF41 ; } | |||||
| DSCP AF42 { portal_group->pg_dscp = IPTOS_DSCP_AF42 ; } | |||||
| DSCP AF43 { portal_group->pg_dscp = IPTOS_DSCP_AF43 ; } | |||||
; | |||||
lun: LUN lun_name | lun: LUN lun_name | ||||
OPENING_BRACKET lun_entries CLOSING_BRACKET | OPENING_BRACKET lun_entries CLOSING_BRACKET | ||||
{ | { | ||||
lun = NULL; | lun = NULL; | ||||
} | } | ||||
; | ; | ||||
▲ Show 20 Lines • Show All 622 Lines • Show Last 20 Lines |