parse.y (263715) | parse.y (263720) |
---|---|
1%{ 2/*- 3 * Copyright (c) 2012 The FreeBSD Foundation 4 * All rights reserved. 5 * 6 * This software was developed by Edward Tomasz Napierala under sponsorship 7 * from the FreeBSD Foundation. 8 * --- 13 unchanged lines hidden (view full) --- 22 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28 * SUCH DAMAGE. 29 * | 1%{ 2/*- 3 * Copyright (c) 2012 The FreeBSD Foundation 4 * All rights reserved. 5 * 6 * This software was developed by Edward Tomasz Napierala under sponsorship 7 * from the FreeBSD Foundation. 8 * --- 13 unchanged lines hidden (view full) --- 22 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28 * SUCH DAMAGE. 29 * |
30 * $FreeBSD: stable/10/usr.sbin/ctld/parse.y 263715 2014-03-25 11:45:03Z trasz $ | 30 * $FreeBSD: stable/10/usr.sbin/ctld/parse.y 263720 2014-03-25 12:01:55Z trasz $ |
31 */ 32 33#include <sys/queue.h> 34#include <sys/types.h> 35#include <sys/stat.h> 36#include <assert.h> 37#include <stdio.h> 38#include <stdint.h> --- 14 unchanged lines hidden (view full) --- 53 54extern void yyerror(const char *); 55extern int yylex(void); 56extern void yyrestart(FILE *); 57 58%} 59 60%token ALIAS AUTH_GROUP BACKEND BLOCKSIZE CHAP CHAP_MUTUAL CLOSING_BRACKET | 31 */ 32 33#include <sys/queue.h> 34#include <sys/types.h> 35#include <sys/stat.h> 36#include <assert.h> 37#include <stdio.h> 38#include <stdint.h> --- 14 unchanged lines hidden (view full) --- 53 54extern void yyerror(const char *); 55extern int yylex(void); 56extern void yyrestart(FILE *); 57 58%} 59 60%token ALIAS AUTH_GROUP BACKEND BLOCKSIZE CHAP CHAP_MUTUAL CLOSING_BRACKET |
61%token DEBUG DEVICE_ID DISCOVERY_AUTH_GROUP LISTEN LISTEN_ISER LUN MAXPROC NUM 62%token OPENING_BRACKET OPTION PATH PIDFILE PORTAL_GROUP SERIAL SIZE STR TARGET 63%token TIMEOUT | 61%token DEBUG DEVICE_ID DISCOVERY_AUTH_GROUP INITIATOR_NAME INITIATOR_PORTAL 62%token LISTEN LISTEN_ISER LUN MAXPROC NUM OPENING_BRACKET OPTION PATH PIDFILE 63%token PORTAL_GROUP SERIAL SIZE STR TARGET TIMEOUT |
64 65%union 66{ 67 uint64_t num; 68 char *str; 69} 70 71%token <num> NUM --- 71 unchanged lines hidden (view full) --- 143 | 144 auth_group_entries auth_group_entry 145 ; 146 147auth_group_entry: 148 auth_group_chap 149 | 150 auth_group_chap_mutual | 64 65%union 66{ 67 uint64_t num; 68 char *str; 69} 70 71%token <num> NUM --- 71 unchanged lines hidden (view full) --- 143 | 144 auth_group_entries auth_group_entry 145 ; 146 147auth_group_entry: 148 auth_group_chap 149 | 150 auth_group_chap_mutual |
151 | 152 auth_group_initiator_name 153 | 154 auth_group_initiator_portal |
|
151 ; 152 153auth_group_chap: CHAP STR STR 154 { 155 const struct auth *ca; 156 157 ca = auth_new_chap(auth_group, $2, $3); 158 free($2); --- 12 unchanged lines hidden (view full) --- 171 free($3); 172 free($4); 173 free($5); 174 if (ca == NULL) 175 return (1); 176 } 177 ; 178 | 155 ; 156 157auth_group_chap: CHAP STR STR 158 { 159 const struct auth *ca; 160 161 ca = auth_new_chap(auth_group, $2, $3); 162 free($2); --- 12 unchanged lines hidden (view full) --- 175 free($3); 176 free($4); 177 free($5); 178 if (ca == NULL) 179 return (1); 180 } 181 ; 182 |
183auth_group_initiator_name: INITIATOR_NAME STR 184 { 185 const struct auth_name *an; 186 187 an = auth_name_new(auth_group, $2); 188 free($2); 189 if (an == NULL) 190 return (1); 191 } 192 ; 193 194auth_group_initiator_portal: INITIATOR_PORTAL STR 195 { 196 const struct auth_portal *ap; 197 198 ap = auth_portal_new(auth_group, $2); 199 free($2); 200 if (ap == NULL) 201 return (1); 202 } 203 ; 204 |
|
179portal_group_definition: PORTAL_GROUP portal_group_name 180 OPENING_BRACKET portal_group_entries CLOSING_BRACKET 181 { 182 portal_group = NULL; 183 } 184 ; 185 186portal_group_name: STR --- 85 unchanged lines hidden (view full) --- 272 alias_statement 273 | 274 auth_group_statement 275 | 276 chap_statement 277 | 278 chap_mutual_statement 279 | | 205portal_group_definition: PORTAL_GROUP portal_group_name 206 OPENING_BRACKET portal_group_entries CLOSING_BRACKET 207 { 208 portal_group = NULL; 209 } 210 ; 211 212portal_group_name: STR --- 85 unchanged lines hidden (view full) --- 298 alias_statement 299 | 300 auth_group_statement 301 | 302 chap_statement 303 | 304 chap_mutual_statement 305 | |
306 initiator_name_statement 307 | 308 initiator_portal_statement 309 | |
|
280 portal_group_statement 281 | 282 lun_statement 283 ; 284 285alias_statement: ALIAS STR 286 { 287 if (target->t_alias != NULL) { --- 89 unchanged lines hidden (view full) --- 377 free($3); 378 free($4); 379 free($5); 380 if (ca == NULL) 381 return (1); 382 } 383 ; 384 | 310 portal_group_statement 311 | 312 lun_statement 313 ; 314 315alias_statement: ALIAS STR 316 { 317 if (target->t_alias != NULL) { --- 89 unchanged lines hidden (view full) --- 407 free($3); 408 free($4); 409 free($5); 410 if (ca == NULL) 411 return (1); 412 } 413 ; 414 |
415initiator_name_statement: INITIATOR_NAME STR 416 { 417 const struct auth_name *an; 418 419 if (target->t_auth_group != NULL) { 420 if (target->t_auth_group->ag_name != NULL) { 421 log_warnx("cannot mix auth-group with " 422 "initiator-name for target \"%s\"", 423 target->t_iqn); 424 free($2); 425 return (1); 426 } 427 } else { 428 target->t_auth_group = auth_group_new(conf, NULL); 429 if (target->t_auth_group == NULL) { 430 free($2); 431 return (1); 432 } 433 target->t_auth_group->ag_target = target; 434 } 435 an = auth_name_new(target->t_auth_group, $2); 436 free($2); 437 if (an == NULL) 438 return (1); 439 } 440 ; 441 442initiator_portal_statement: INITIATOR_PORTAL STR 443 { 444 const struct auth_portal *ap; 445 446 if (target->t_auth_group != NULL) { 447 if (target->t_auth_group->ag_name != NULL) { 448 log_warnx("cannot mix auth-group with " 449 "initiator-portal for target \"%s\"", 450 target->t_iqn); 451 free($2); 452 return (1); 453 } 454 } else { 455 target->t_auth_group = auth_group_new(conf, NULL); 456 if (target->t_auth_group == NULL) { 457 free($2); 458 return (1); 459 } 460 target->t_auth_group->ag_target = target; 461 } 462 ap = auth_portal_new(target->t_auth_group, $2); 463 free($2); 464 if (ap == NULL) 465 return (1); 466 } 467 ; 468 |
|
385portal_group_statement: PORTAL_GROUP STR 386 { 387 if (target->t_portal_group != NULL) { 388 log_warnx("portal-group for target \"%s\" " 389 "specified more than once", target->t_iqn); 390 free($2); 391 return (1); 392 } --- 229 unchanged lines hidden --- | 469portal_group_statement: PORTAL_GROUP STR 470 { 471 if (target->t_portal_group != NULL) { 472 log_warnx("portal-group for target \"%s\" " 473 "specified more than once", target->t_iqn); 474 free($2); 475 return (1); 476 } --- 229 unchanged lines hidden --- |