#! /usr/bin/perl

$nametablever = '4';

%index = (
DMC => 259, HWRevision => 256, ProductID => 257,
SerialNumber => 258,
annex => 425, autoload => 385, bluetooth => 388, bluetooth_key => 428,
bootloaderVersion => 386, bootserport => 387, country => 424,
cpufrequency => 389, crash => 417, ethaddr => 407, firmware_info => 430,
firmware_version => 422, firstfreeaddress => 390, flashsize => 391,
http_key => 429, kernel_args => 416, kernel_args1 => 415, language => 423,
linux_fs_start => 408, linuxip => 409, maca => 392, macb => 393, macc => 406,
macdsl => 395, macwlan => 394, memsize => 396, modetty0 => 397, modetty1 => 398,
modulation => 410, mtd0 => 432, mtd1 => 433, mtd2 => 434, mtd3 => 435,
mtd4 => 436, mtd5 => 437, mtd6 => 438, mtd7 => 439, my_ipaddress => 399,
nfs => 411, nfsroot => 412, oam_lb_timeout => 413, prompt => 400, ptest => 426,
req_fullrate_freq => 402, reserved => 401, sysfrequency => 403, systype => 414,
'urlader-version' => 509, usb_board_mac => 404, usb_device_id => 418,
usb_device_name => 420, usb_manufacturer_name => 421, usb_revision_id => 419,
usb_rndis_mac => 405, wlan_key => 427);

if ($nametablever eq '5') {
  $index{AutoMDIX} = 0x1af;
}

open MTD3, ">mtd3" or die "can't write mtd3: $!";
open MTD4, ">mtd4" or die "can't write mtd4: $!";

print MTD3 pack("vvN", 1, 4, 0xfffffffe);
print MTD4 pack("vvN", 1, 4, 0xffffffff);
$size -= 8;

while(<>) {
  chomp;
  ($name, $value) = split(/\s+/, $_);
  $len = length($value) + 1;
  { use integer; $len = (($len+3)/4)*4; }
  $data = pack("vva$len", $index{$name}, $len, $value);
  print MTD3 $data;
  $size -= length($data);
}

$dir = pack("vva4", 0x1fe, 0, "\@$nametablever");
foreach $name (sort keys %index) {
  $len = length($name);
  next unless($len);
  { use integer; $len = (($len/4)+1)*4; }
  $dir .= pack("vva$len", $index{$name}, 0, $name);
}
$len = length($dir);
{ use integer; $len = (($len+3)/4)*4; }
$data = pack("vva$len", 0x1ff, $len, $dir);
print MTD3 $data;
$size -= length($data);

