Deleted Added
full compact
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 ---