<<< Chronological >>> Author Index    Subject Index <<< Threads >>>

Re: URGENT: Bug fixes in the RIPE database distribution


Has anyone been looking at the problems with the whois server?  This
has really been a problem for operations here, since a) the problems
*appear* to be non-deterministic and b) sometimes the exact netmask
for a route is not known.

Here's an example of whois oddity.  Why doesn't the RADB 192.5.4.0/23 show
up in the second query?

Thanks,

Selina

foo-selina:/u/selina: ra 192.5.4
route:       192.5.4.0/23
descr:       Vixie Enterprises
descr:       116 Stanley Street
descr:       Redwood City
descr:       CA 94062, USA
origin:      AS3557
comm-list:   COMM_NSFNET
advisory:    AS690 1:3561(11) 2:3561(218) 4:200(144) 5:701(147)
mnt-by:      MAINT-AS3557
changed:     nsfnet-admin@localhost 950118
source:      RADB

route:       192.5.4.0/23
descr:       NET-VIX2
origin:      AS3557
advisory:    AS690   1:3561(11) 2:3561(144) 3:3561(27) 4:3561(147) 5:3561(218)  5:701(147)  6:7
01(134)
mnt-by:      BARRNET
changed:     vaf@localhost 950111
source:      MCI

foo-selina:/u/selina: ra 192.5.5
route:       192.5.5.0/24
descr:       Vixie Enterprises
descr:       116 Stanley Street
descr:       Redwood City
descr:       CA 94062, USA
origin:      AS3557
comm-list:   COMM_NSFNET
advisory:    AS690 2:200(144) 3:701(147)
mnt-by:      MAINT-AS3557
changed:     nsfnet-admin@localhost 940729
source:      RADB

route:       192.5.4.0/23
descr:       NET-VIX2
origin:      AS3557
advisory:    AS690   1:3561(11) 2:3561(144) 3:3561(27) 4:3561(147) 5:3561(218)  5:701(147)  6:7
01(134)
mnt-by:      BARRNET
changed:     vaf@localhost 950111
source:      MCI


  > bugsy-sfp:/u/sfp: whois -h whois.ra.net 194.128
  > route:       194.128.0.0/15
  > descr:       PIPEX-BLOCK3
  > origin:      AS1849
  > advisory:    AS690 1:1849 2:701(147) 3:701(134) 4:1800
  > remarks:     Holes to come!
  > mnt-by:      AS1849-MNT
  > changed:     tim@localhost 950428
  > source:      RIPE
  >
  > bugsy-sfp:/u/sfp: whois -h whois.ra.net 194.128/15
  > route:       194.128.0.0/15
  > descr:       PIPEX Ltd
  > descr:       216 Cambridge Science Park
  > descr:       Milton Road
  > descr:       Cambridge
  > descr:       England
  > descr:       CB4 4WA
  > descr:       UNITED KINGDOM
  > origin:      AS1849
  > comm-list:   COMM_NSFNET
  > advisory:    AS690 1:1849 2:701(147) 4:1800
  > mnt-by:      MAINT-AS1849
  > changed:     support@localhost 950511
  > source:      RADB
  >
  > route:       194.128.0.0/15
  > descr:       PIPEX-BLOCK3
  > origin:      AS1849
  > advisory:    AS690 1:1849 2:701(147) 3:701(134) 4:1800
  > remarks:     Holes to come!
  > mnt-by:      AS1849-MNT
  > changed:     tim@localhost 950428
  > source:      RIPE

> 
> Dear all,
> 
> Recently Tony Bates found an authorisation problem in 'updatecheck.pl'. 
> Today my fix is ready. Please apply this fix to your software!
> 
> Furthermore, I included the recent fixes made by Tony for :
> 
> net2net.pl
> misc.pl
> 
> in the distribution and a small one from Curtis Villamizar for :
> 
> dbupdate.pl
> 
> I plan to add also some other fixes from Curtis in the next release.
> 
> Kind regards,
> 
> David Kessens
> RIPE NCC Database software maintainer
> 
> ======================================================================
> 
> How to apply the fix(es) :
> 
> Fix src/filename.pl with 'patch' or just put in the corresponding
> file(s) of the new distribution (ftp:/ftp.ripe.net/ripe/dbase/software,
> file with latest version number). Always make a backup copy of the old
> file(s) to be able to restore the original software in case you might
> experience problems. After the fix(es) are applied, do a 'make install'
> from the database root directory to install the patched file(s).
> 
> The following files have been changed from the previous release:
> 
> updatecheck.pl
> dbupdate.pl
> net2net.pl
> misc.pl
> 
> ======================================================================
> *** /ncc/dbase/src/old/updatecheck.pl	Tue Jan 17 17:37:36 1995
> --- /ncc/dbase/src/updatecheck.pl	Tue May 30 18:47:24 1995
> ***************
> *** 1,7 ****
>   #	$RCSfile: updatecheck.pl,v $
> ! #	$Revision: 1.19 $
>   #	$Author: ripe-dbm $
> ! #	$Date: 1995/01/17 16:37:36 $
>   
>   require "defines.pl";
>   require "adderror.pl";
> --- 1,7 ----
>   #	$RCSfile: updatecheck.pl,v $
> ! #	$Revision: 1.20 $
>   #	$Author: ripe-dbm $
> ! #	$Date: 1995/05/30 13:34:47 $
>   
>   require "defines.pl";
>   require "adderror.pl";
> ***************
> *** 70,79 ****
>       }
>   
>   
> !     # Check authorisation by maintainer unless override is specified.
>   
>       if (!$new{"uo"} && !&Maintainer(*cur, *new)) {
> !         return $E_AUTHFAIL unless !&entype(*new);
>       }
>   
>       # Catch if called from dbdel, then skip all checks,
> --- 70,80 ----
>       }
>   
>   
> !     # Check authorisation by maintainer unless override is specified
> !     # and handles special (dirty trick) delete case with $new in $cur
>   
>       if (!$new{"uo"} && !&Maintainer(*cur, *new)) {
> !         return $E_AUTHFAIL if !$cur{"uo"};
>       }
>   
>       # Catch if called from dbdel, then skip all checks,
> *** /ncc/dbase/src/old/dbupdate.pl	Tue May 30 18:38:57 1995
> --- /ncc/dbase/src/dbupdate.pl	Tue May 30 18:48:17 1995
> ***************
> *** 1,9 ****
>   #!PERL
>   
>   #	$RCSfile: dbupdate.pl,v $
> ! #	$Revision: 0.33 $
> ! #	$Author: david $
> ! #	$Date: 1995/02/24 11:13:22 $
>   
>   # This is a client that will update objects read from a file directly
>   # in the database, without interference of updated.
> --- 1,9 ----
>   #!PERL
>   
>   #	$RCSfile: dbupdate.pl,v $
> ! #	$Revision: 0.34 $
> ! #	$Author: ripe-dbm $
> ! #	$Date: 1995/05/30 14:44:09 $
>   
>   # This is a client that will update objects read from a file directly
>   # in the database, without interference of updated.
> ***************
> *** 46,52 ****
>   # -F                    - Do fast update without mail and other stuff
>   # -S                    - Do only syntax check - Not implemented
>   
> ! &Getopts('ln:vMAHVFS');
>   
>   # Need this below for running perl in tainted mode.
>   
> --- 46,52 ----
>   # -F                    - Do fast update without mail and other stuff
>   # -S                    - Do only syntax check - Not implemented
>   
> ! &Getopts('l:n:vMAHVFS');
>   
>   # Need this below for running perl in tainted mode.
>   
> *** /ncc/dbase/src/old/net2net.pl	Tue May 30 18:43:22 1995
> --- /ncc/dbase/src/net2net.pl	Tue May 30 18:49:30 1995
> ***************
> *** 1,8 ****
>   #
>   #	$RCSfile: net2net.pl,v $
> ! #	$Revision: 0.13 $
> ! #	$Author: tony $
> ! #	$Date: 1994/09/20 12:27:36 $
>   #
>   # net2net.pl 
>   #
> --- 1,8 ----
>   #
>   #	$RCSfile: net2net.pl,v $
> ! #	$Revision: 0.14 $
> ! #	$Author: ripe-dbm $
> ! #	$Date: 1995/05/30 16:45:19 $
>   #
>   # net2net.pl 
>   #
> ***************
> *** 140,147 ****
>               $len = 16;
>   	} elsif ($2 == 0 && $3 == 0 && $4 == 0) {
>   	    $len = 8;
>   	}
> ! 	@return_rep = (@return_rep, $net_rep."/".$len);
>   	return $OK, "", @return_rep;
>       } else {
>   	return $NOK, 
> --- 140,152 ----
>               $len = 16;
>   	} elsif ($2 == 0 && $3 == 0 && $4 == 0) {
>   	    $len = 8;
> + 	} else {
> + 	    return $NOK,
> + 	    "$net_rep is not a classful net representation I understand",
> + 	    @return_rep;     
>   	}
> ! 	local($val) = &trimnet($net_rep);
> ! 	@return_rep = (@return_rep, $val."/".$len);
>   	return $OK, "", @return_rep;
>       } else {
>   	return $NOK, 
> ***************
> *** 161,167 ****
>   	local($begin) = &quad2int($oldnet);
>   	local($end) = &quad2int($2);
>   	if($end < $begin) {
> ! 	    return $NOK, "range is invalid", @returndtring;
>   	}
>   
>   	if ($oldnet =~ /(\d+)\.\d+\.\d+\.\d+/) {
> --- 166,172 ----
>   	local($begin) = &quad2int($oldnet);
>   	local($end) = &quad2int($2);
>   	if($end < $begin) {
> ! 	    return $NOK, "range is invalid", @returnstring;
>   	}
>   
>   	if ($oldnet =~ /(\d+)\.\d+\.\d+\.\d+/) {
> ***************
> *** 236,242 ****
>   			    "based on prefix $usepre",
>               @returnstring;
>   	}
> ! 	return $OK, "", $net_rep;
>       } else {
>   	return $NOK,
>   	"$net_rep is not an representation I understand",
> --- 241,249 ----
>   			    "based on prefix $usepre",
>               @returnstring;
>   	}
> ! 	local($val) = &trimnet($net);
> ! 	@returnstring = "$val"."/".$len;
> ! 	return $OK, "", @returnstring;
>       } else {
>   	return $NOK,
>   	"$net_rep is not an representation I understand",
> ***************
> *** 370,373 ****
> --- 377,386 ----
>       }
>       return( $s );
>   }
> + 
> + sub trimnet {
> +     local($quad) = @_;
> +     return(&int2quad(&quad2int($quad)));
> + }
>   1;
> + 
> *** /ncc/dbase/src/old/misc.pl	Wed May 31 14:06:18 1995
> --- /ncc/dbase/src/misc.pl	Wed May 31 14:08:13 1995
> ***************
> *** 1,9 ****
>   #       misc - miscellaneaous functions
>   #
>   #	$RCSfile: misc.pl,v $
> ! #	$Revision: 0.44 $
> ! #	$Author: marten $
> ! #	$Date: 1994/12/16 11:06:55 $
>   #
>   
>   require "defines.pl";
> --- 1,9 ----
>   #       misc - miscellaneaous functions
>   #
>   #	$RCSfile: misc.pl,v $
> ! #	$Revision: 0.45 $
> ! #	$Author: ripe-dbm $
> ! #	$Date: 1995/05/31 12:04:40 $
>   #
>   
>   require "defines.pl";
> ***************
> *** 197,203 ****
>   #
>   sub iscommunity {
>       local($str) = @_;
> !     return 0 if $str =~ /[a-z]/;
>       foreach $_ ((keys %KEYWORD, "AS")) {
>   	if (($_ eq "(") || ($_ eq ")")) {
>   	    $_ = "\\".$_;
> --- 197,203 ----
>   #
>   sub iscommunity {
>       local($str) = @_;
> !     return 0 if $str !~ /[A-Z]+/;
>       foreach $_ ((keys %KEYWORD, "AS")) {
>   	if (($_ eq "(") || ($_ eq ")")) {
>   	    $_ = "\\".$_;
> *** /ncc/dbase/src/old/updatecheck.pl	Tue Jan 17 17:37:36 1995
> --- /ncc/dbase/src/updatecheck.pl	Tue May 30 18:47:24 1995
> ***************
> *** 1,7 ****
>   #	$RCSfile: updatecheck.pl,v $
> ! #	$Revision: 1.19 $
>   #	$Author: ripe-dbm $
> ! #	$Date: 1995/01/17 16:37:36 $
>   
>   require "defines.pl";
>   require "adderror.pl";
> --- 1,7 ----
>   #	$RCSfile: updatecheck.pl,v $
> ! #	$Revision: 1.20 $
>   #	$Author: ripe-dbm $
> ! #	$Date: 1995/05/30 13:34:47 $
>   
>   require "defines.pl";
>   require "adderror.pl";
> ***************
> *** 70,79 ****
>       }
>   
>   
> !     # Check authorisation by maintainer unless override is specified.
>   
>       if (!$new{"uo"} && !&Maintainer(*cur, *new)) {
> !         return $E_AUTHFAIL unless !&entype(*new);
>       }
>   
>       # Catch if called from dbdel, then skip all checks,
> --- 70,80 ----
>       }
>   
>   
> !     # Check authorisation by maintainer unless override is specified
> !     # and handles special (dirty trick) delete case with $new in $cur
>   
>       if (!$new{"uo"} && !&Maintainer(*cur, *new)) {
> !         return $E_AUTHFAIL if !$cur{"uo"};
>       }
>   
>       # Catch if called from dbdel, then skip all checks,
> *** /ncc/dbase/src/old/dbupdate.pl	Tue May 30 18:38:57 1995
> --- /ncc/dbase/src/dbupdate.pl	Tue May 30 18:48:17 1995
> ***************
> *** 1,9 ****
>   #!PERL
>   
>   #	$RCSfile: dbupdate.pl,v $
> ! #	$Revision: 0.33 $
> ! #	$Author: david $
> ! #	$Date: 1995/02/24 11:13:22 $
>   
>   # This is a client that will update objects read from a file directly
>   # in the database, without interference of updated.
> --- 1,9 ----
>   #!PERL
>   
>   #	$RCSfile: dbupdate.pl,v $
> ! #	$Revision: 0.34 $
> ! #	$Author: ripe-dbm $
> ! #	$Date: 1995/05/30 14:44:09 $
>   
>   # This is a client that will update objects read from a file directly
>   # in the database, without interference of updated.
> ***************
> *** 46,52 ****
>   # -F                    - Do fast update without mail and other stuff
>   # -S                    - Do only syntax check - Not implemented
>   
> ! &Getopts('ln:vMAHVFS');
>   
>   # Need this below for running perl in tainted mode.
>   
> --- 46,52 ----
>   # -F                    - Do fast update without mail and other stuff
>   # -S                    - Do only syntax check - Not implemented
>   
> ! &Getopts('l:n:vMAHVFS');
>   
>   # Need this below for running perl in tainted mode.
>   
> *** /ncc/dbase/src/old/net2net.pl	Tue May 30 18:43:22 1995
> --- /ncc/dbase/src/net2net.pl	Tue May 30 18:49:30 1995
> ***************
> *** 1,8 ****
>   #
>   #	$RCSfile: net2net.pl,v $
> ! #	$Revision: 0.13 $
> ! #	$Author: tony $
> ! #	$Date: 1994/09/20 12:27:36 $
>   #
>   # net2net.pl 
>   #
> --- 1,8 ----
>   #
>   #	$RCSfile: net2net.pl,v $
> ! #	$Revision: 0.14 $
> ! #	$Author: ripe-dbm $
> ! #	$Date: 1995/05/30 16:45:19 $
>   #
>   # net2net.pl 
>   #
> ***************
> *** 140,147 ****
>               $len = 16;
>   	} elsif ($2 == 0 && $3 == 0 && $4 == 0) {
>   	    $len = 8;
>   	}
> ! 	@return_rep = (@return_rep, $net_rep."/".$len);
>   	return $OK, "", @return_rep;
>       } else {
>   	return $NOK, 
> --- 140,152 ----
>               $len = 16;
>   	} elsif ($2 == 0 && $3 == 0 && $4 == 0) {
>   	    $len = 8;
> + 	} else {
> + 	    return $NOK,
> + 	    "$net_rep is not a classful net representation I understand",
> + 	    @return_rep;     
>   	}
> ! 	local($val) = &trimnet($net_rep);
> ! 	@return_rep = (@return_rep, $val."/".$len);
>   	return $OK, "", @return_rep;
>       } else {
>   	return $NOK, 
> ***************
> *** 161,167 ****
>   	local($begin) = &quad2int($oldnet);
>   	local($end) = &quad2int($2);
>   	if($end < $begin) {
> ! 	    return $NOK, "range is invalid", @returndtring;
>   	}
>   
>   	if ($oldnet =~ /(\d+)\.\d+\.\d+\.\d+/) {
> --- 166,172 ----
>   	local($begin) = &quad2int($oldnet);
>   	local($end) = &quad2int($2);
>   	if($end < $begin) {
> ! 	    return $NOK, "range is invalid", @returnstring;
>   	}
>   
>   	if ($oldnet =~ /(\d+)\.\d+\.\d+\.\d+/) {
> ***************
> *** 236,242 ****
>   			    "based on prefix $usepre",
>               @returnstring;
>   	}
> ! 	return $OK, "", $net_rep;
>       } else {
>   	return $NOK,
>   	"$net_rep is not an representation I understand",
> --- 241,249 ----
>   			    "based on prefix $usepre",
>               @returnstring;
>   	}
> ! 	local($val) = &trimnet($net);
> ! 	@returnstring = "$val"."/".$len;
> ! 	return $OK, "", @returnstring;
>       } else {
>   	return $NOK,
>   	"$net_rep is not an representation I understand",
> ***************
> *** 370,373 ****
> --- 377,386 ----
>       }
>       return( $s );
>   }
> + 
> + sub trimnet {
> +     local($quad) = @_;
> +     return(&int2quad(&quad2int($quad)));
> + }
>   1;
> + 
> *** /ncc/dbase/src/old/misc.pl	Wed May 31 14:06:18 1995
> --- /ncc/dbase/src/misc.pl	Wed May 31 14:08:13 1995
> ***************
> *** 1,9 ****
>   #       misc - miscellaneaous functions
>   #
>   #	$RCSfile: misc.pl,v $
> ! #	$Revision: 0.44 $
> ! #	$Author: marten $
> ! #	$Date: 1994/12/16 11:06:55 $
>   #
>   
>   require "defines.pl";
> --- 1,9 ----
>   #       misc - miscellaneaous functions
>   #
>   #	$RCSfile: misc.pl,v $
> ! #	$Revision: 0.45 $
> ! #	$Author: ripe-dbm $
> ! #	$Date: 1995/05/31 12:04:40 $
>   #
>   
>   require "defines.pl";
> ***************
> *** 197,203 ****
>   #
>   sub iscommunity {
>       local($str) = @_;
> !     return 0 if $str =~ /[a-z]/;
>       foreach $_ ((keys %KEYWORD, "AS")) {
>   	if (($_ eq "(") || ($_ eq ")")) {
>   	    $_ = "\\".$_;
> --- 197,203 ----
>   #
>   sub iscommunity {
>       local($str) = @_;
> !     return 0 if $str !~ /[A-Z]+/;
>       foreach $_ ((keys %KEYWORD, "AS")) {
>   	if (($_ eq "(") || ($_ eq ")")) {
>   	    $_ = "\\".$_;
> 
> 
> --- End of fix(es) ---



<<< Chronological >>> Author    Subject <<< Threads >>>