Commit 286e2011 authored by Ondrej Zajicek (work)'s avatar Ondrej Zajicek (work)
Browse files

Miscellaneous minor fixes

parent 0c6dfe52
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@ obj := $(src-o-files)

$(all-client)

$(o)commands.c.dep: $(objdir)/conf/commands.h
$(o)commands.o: $(objdir)/conf/commands.h

$(exedir)/birdc: $(o)birdc.o
$(exedir)/birdc: LIBS += $(CLIENT_LIBS)
+10 −9
Original line number Diff line number Diff line
@@ -8,12 +8,6 @@ BISON_DEBUG=-t
#FLEX_DEBUG=-d
endif

$(o)cf-parse.tab.h: $(o)cf-parse.tab.c

$(o)cf-parse.tab.c: $(o)cf-parse.y
	echo $< $@ $(o)
	$(BISON) -b$(@:.tab.c=) -dv -pcf_ $(BISON_DEBUG) $<

$(conf-y-targets): $(s)confbase.Y
	$(M4) -P $| $^ >$@

@@ -21,9 +15,16 @@ $(o)cf-parse.y: | $(s)gen_parser.m4
$(o)keywords.h: | $(s)gen_keywords.m4
$(o)commands.h: | $(s)gen_commands.m4 $(srcdir)/client/cmds.m4

$(o)cf-lex.c: $(s)cf-lex.l $(o)cf-parse.tab.h $(o)keywords.h $(o)commands.h
	$(FLEX) $(FLEX_DEBUG) -s -B -8 -o$@ -Pcf_ $<
$(o)cf-parse.tab.h: $(o)cf-parse.tab.c

$(o)cf-parse.tab.c: $(o)cf-parse.y
	$(BISON) $(BISON_DEBUG) -dv -pcf_ -b $(@:.tab.c=) $<

$(o)cf-lex.c: $(s)cf-lex.l
	$(FLEX) $(FLEX_DEBUG) -s -B -8 -Pcf_ -o $@ $<

$(o)cf-lex.o: $(o)cf-parse.tab.h $(o)keywords.h

$(addprefix $(o),cf-parse.tab.h cf-parse.tab.c cf-parse.y keywords.h commands.h cf-lex.c): $(objdir)/.dir-stamp
$(addprefix $(o), cf-parse.y keywords.h commands.h cf-parse.tab.h cf-parse.tab.c cf-lex.c): $(objdir)/.dir-stamp

$(call clean,cf-parse.tab.h cf-parse.tab.c cf-parse.y keywords.h commands.h cf-lex.c cf-parse.output)
+4 −8
Original line number Diff line number Diff line
@@ -201,21 +201,17 @@ net_ip6_: IP6 '/' NUM
net_roa4_: net_ip4_ MAX NUM AS NUM
{
  $$ = cfg_alloc(sizeof(net_addr_roa4));
  net_fill_roa4($$, ((net_addr_ip4 *)&$1)->prefix, $1.pxlen, $3, $5);
  if ($3 < 0 || $3 > IP4_MAX_PREFIX_LENGTH)
  net_fill_roa4($$, net4_prefix(&$1), net4_pxlen(&$1), $3, $5);
  if ($3 < net4_pxlen(&$1) || $3 > IP4_MAX_PREFIX_LENGTH)
    cf_error("Invalid max prefix length %d", $3);
  if (((net_addr_roa4 *) $$)->max_pxlen < ($$)->pxlen)
    cf_error("Maximum prefix length %d must be >= prefix length %d", ((net_addr_roa4 *) $$)->max_pxlen, ($$)->pxlen);
};

net_roa6_: net_ip6_ MAX NUM AS NUM
{
  $$ = cfg_alloc(sizeof(net_addr_roa6));
  net_fill_roa6($$, ((net_addr_ip6 *)&$1)->prefix, $1.pxlen, $3, $5);
  if ($3 < 0 || $3 > IP6_MAX_PREFIX_LENGTH)
  net_fill_roa6($$, net6_prefix(&$1), net6_pxlen(&$1), $3, $5);
  if ($3 < net6_pxlen(&$1) || $3 > IP6_MAX_PREFIX_LENGTH)
    cf_error("Invalid max prefix length %d", $3);
  if (((net_addr_roa6 *) $$)->max_pxlen < ($$)->pxlen)
    cf_error("Maximum prefix length %d must be >= prefix length %d", ((net_addr_roa6 *) $$)->max_pxlen, ($$)->pxlen);
};

net_ip_: net_ip4_ | net_ip6_ ;
+5 −1
Original line number Diff line number Diff line
@@ -1277,9 +1277,13 @@ interpret(struct f_inst *what)
    }

    struct rtable *table = ((struct f_inst_roa_check *) what)->rtc->table;
    if (!table || table->addr_type != (v1.val.net->type == NET_IP4 ? NET_ROA4 : NET_ROA6))
    if (!table)
      runtime("Missing ROA table");

    /* Table type is either NET_ROA4 or NET_ROA6, checked in parser */
    if (v1.val.net->type != ((table->addr_type == NET_ROA4) ? NET_IP4 : NET_IP6))
      runtime("Incompatible net type");

    res.type = T_ENUM_ROA;
    res.val.i = net_roa_check(table, v1.val.net, as);

+5 −3
Original line number Diff line number Diff line
@@ -8,7 +8,9 @@ const char * const net_label[] = {
  [NET_IP4] = "ipv4",
  [NET_IP6] = "ipv6",
  [NET_VPN4] = "vpn4",
  [NET_VPN6] = "vpn6"
  [NET_VPN6] = "vpn6",
  [NET_ROA4] = "roa4",
  [NET_ROA6] = "roa6",
};

const u16 net_addr_length[] = {
@@ -34,8 +36,8 @@ const u16 net_max_text_length[] = {
  [NET_IP6] = 43,	/* "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128" */
  [NET_VPN4] = 40,	/* "4294967296:4294967296 255.255.255.255/32" */
  [NET_VPN6] = 65,	/* "4294967296:4294967296 ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128" */
  [NET_ROA4] = 30,      /* "255.255.255.255/32 AS4294967295" */
  [NET_ROA6] = 56,      /* "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128 AS4294967295" */
  [NET_ROA4] = 34,      /* "255.255.255.255/32-32 AS4294967295" */
  [NET_ROA6] = 60,      /* "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128-128 AS4294967295" */
};


Loading