package VyattaMisc;
require Exporter;
@ISA	= qw(Exporter);
@EXPORT	= qw(getNetAddIP, isIpAddress);
@EXPORT_OK = qw(getNetAddIP, isIpAddress);

use strict;

sub getNetAddrIP {
  my ($interface);
  ($interface) = @_;

  if ($interface eq '') {
    print STDERR "Error:  No interface specified.\n";
    return undef;
  }


  my $ifconfig_out = `ifconfig $interface`;
  $ifconfig_out =~ /inet addr:(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/;
  my $ip = $1;
  if ($ip eq '') {
    print STDERR "Error:  Unable to determine IP address for interface \'$interface\'.\n";
    return undef;
  }


  $ifconfig_out =~ /Mask:(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/;
  my $netmask = $1;
  if ($netmask eq '') {
    print STDERR "Error:  Unable to determine netmask for interface \'$interface\'.\n";
    return undef;
  }

  use NetAddr::IP;  # This library is available via libnetaddr-ip-perl.deb
  my $naip = new NetAddr::IP($ip, $netmask);
  return $naip;
}

sub isIpAddress {
  my $ip = shift;

  $_ = $ip;
  if ( ! /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) {
    return 0;
  }
  else {
    my @ips = split /\./, $ip;
    my $octet = 0;
    my $counter = 0;

    foreach $octet (@ips) {
      if (($octet < 0) || ($octet > 255)) { return 0; }
      if (($counter == 0) && ($octet < 1)) { return 0; }
      $counter++;
    }
  }

  return 1;
}

return 1;