Commit d7661fbe authored by Jan Moskyto Matejka's avatar Jan Moskyto Matejka Committed by Ondrej Zajicek (work)
Browse files

Removed BITS_PER_IP_ADDRESS, MAX_PREFIX_LENGTH, BIRD_AF

Explicit setting of AF_INET(6|) in IP socket creation. BFD set to listen
on v6, without setting the V6ONLY flag to catch both v4 and v6 traffic.

Squashing and minor changes by Ondrej Santiago Zajicek
parent 9b136840
Loading
Loading
Loading
Loading
+13 −14
Original line number Diff line number Diff line
@@ -76,11 +76,10 @@ CF_DECLS
%token <t> TEXT
%type <iface> ipa_scope

%type <i> expr bool pxlen
%type <i> expr bool pxlen4 pxlen6
%type <i32> expr_us
%type <time> datetime
%type <a> ipa ipa_raw
%type <px> prefix
%type <net> net_ip4 net_ip6 net_ip net_or_ipa
%type <net_ptr> net_any

@@ -175,9 +174,9 @@ ipa_scope:

/* XXXX - symbols and tests */

net_ip4: IP4 pxlen { $$.ip4 = NET_ADDR_IP4($1, $2); }
net_ip4: IP4 pxlen4 { $$.ip4 = NET_ADDR_IP4($1, $2); }

net_ip6: IP6 pxlen { $$.ip6 = NET_ADDR_IP6($1, $2); }
net_ip6: IP6 pxlen6 { $$.ip6 = NET_ADDR_IP6($1, $2); }

net_ip: net_ip4 | net_ip6 ;

@@ -191,22 +190,22 @@ net_or_ipa:
 ;


prefix:
   ipa pxlen {
     if (!ip_is_prefix($1, $2)) cf_error("Invalid prefix");
     $$.addr = $1; $$.len = $2;
pxlen4:
   '/' expr {
     if ($2 < 0 || $2 > IP4_MAX_PREFIX_LENGTH) cf_error("Invalid prefix length %d", $2);
     $$ = $2;
   }
 | ':' IP4 {
     $$ = ip4_masklen($2);
     if ($$ < 0) cf_error("Invalid netmask %I", $2);
   }
 ;

pxlen:
pxlen6:
   '/' expr {
     if ($2 < 0 || $2 > BITS_PER_IP_ADDRESS) cf_error("Invalid prefix length %d", $2);
     if ($2 < 0 || $2 > IP6_MAX_PREFIX_LENGTH) cf_error("Invalid prefix length %d", $2);
     $$ = $2;
   }
 | ':' ipa {
     $$ = ipa_masklen($2);
     if ($$ < 0) cf_error("Invalid netmask %I", $2);
   }
 ;

datetime:
+2 −2
Original line number Diff line number Diff line
@@ -574,7 +574,7 @@ switch_items:

fprefix_s:
   ipa_raw '/' NUM %prec '/' {
     if (($3 < 0) || ($3 > MAX_PREFIX_LENGTH) || !ip_is_prefix($1, $3)) cf_error("Invalid network prefix: %I/%d.", $1, $3);
     if (($3 < 0) || ($3 > (ipa_is_ip4($1) ? IP4_MAX_PREFIX_LENGTH : IP6_MAX_PREFIX_LENGTH)) || !ip_is_prefix($1, $3)) cf_error("Invalid network prefix: %I/%d.", $1, $3);
     $$.type = T_PREFIX; $$.val.px.ip = $1; $$.val.px.len = $3;
   }
 ;
@@ -584,7 +584,7 @@ fprefix:
 | fprefix_s '+' { $$ = $1; $$.val.px.len |= LEN_PLUS; }
 | fprefix_s '-' { $$ = $1; $$.val.px.len |= LEN_MINUS; }
 | fprefix_s '{' NUM ',' NUM '}' { 
     if (! ((0 <= $3) && ($3 <= $5) && ($5 <= MAX_PREFIX_LENGTH))) cf_error("Invalid prefix pattern range: {%d, %d}.", $3, $5);
     if (! ((0 <= $3) && ($3 <= $5) && ($5 <= (ipa_is_ip4($1.val.px.ip) ? IP4_MAX_PREFIX_LENGTH : IP6_MAX_PREFIX_LENGTH)))) cf_error("Invalid prefix pattern range: {%d, %d}.", $3, $5);
     $$ = $1; $$.val.px.len |= LEN_RANGE | ($3 << 16) | ($5 << 8);
   }
 ;
+1 −1
Original line number Diff line number Diff line
@@ -218,7 +218,7 @@ fprefix_get_bounds(struct f_prefix *px, int *l, int *h)
    *l = 0;

  else if (px->len & LEN_PLUS)
    *h = MAX_PREFIX_LENGTH;
    *h = ipa_is_ip4(px->ip) ? IP4_MAX_PREFIX_LENGTH : IP6_MAX_PREFIX_LENGTH;

  else if (px->len & LEN_RANGE)
    {
+0 −4
Original line number Diff line number Diff line
@@ -43,12 +43,8 @@
#define UDP_HEADER_LENGTH	8

#ifdef IPV6
#define MAX_PREFIX_LENGTH 128
#define BITS_PER_IP_ADDRESS 128
#define STD_ADDRESS_P_LENGTH 39
#else
#define MAX_PREFIX_LENGTH 32
#define BITS_PER_IP_ADDRESS 32
#define STD_ADDRESS_P_LENGTH 15
#endif

+9 −1
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@
#include "lib/ip.h"
#include "lib/net.h"


const u16 net_addr_length[] = {
  [NET_IP4] = sizeof(net_addr_ip4),
  [NET_IP6] = sizeof(net_addr_ip6),
@@ -10,6 +11,14 @@ const u16 net_addr_length[] = {
  [NET_VPN6] = sizeof(net_addr_vpn6)
};

const u8 net_max_prefix_length[] = {
  [NET_IP4] = IP4_MAX_PREFIX_LENGTH,
  [NET_IP6] = IP6_MAX_PREFIX_LENGTH,
  [NET_VPN4] = IP4_MAX_PREFIX_LENGTH,
  [NET_VPN6] = IP4_MAX_PREFIX_LENGTH
};


int
net_format(const net_addr *N, char *buf, int buflen)
{
@@ -31,7 +40,6 @@ net_format(const net_addr *N, char *buf, int buflen)
  return 0;
}


ip_addr
net_pxmask(const net_addr *a)
{
Loading