⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 config_card.pl

📁 COPE the first practical network coding scheme which is developped on click
💻 PL
字号:
#!/usr/bin/perl -wuse strict;use Getopt::Long;sub usage() {    print STDERR "usage:    --dev {e. g. ath0}    --ssid    --gateway    --ap ( act as an access point. off by default)";    exit 1;}sub mac_addr_from_dev($) {    my $device = $_[0];    my $output = `/sbin/ifconfig $device 2>&1`;    if ($output =~ /^$device: error/) {        return "";    }    my @tmp = split(/\s+/, $output);    my $mac = $tmp[4];    $mac =~ s/-/:/g;    my @hex = split(/:/, $mac);        return uc (join ":", @hex[0 .. 5]);}sub mac_addr_to_ip($) {    my $mac = $_[0];    my @hex = split(/:/, $mac);    if (scalar(@hex) != 6) {        return "0";    }    # convert the hex digits to decimals                                                my $x = hex($hex[3]);    my $y = hex($hex[4]);    my $z = hex($hex[5]);    return "$x.$y.$z";}my $dev;my $rawdev;my $ssid;my $gateway = 0;my $ap = 0;my $txf = 1;my $interval = 10000;my $rate_control = "static-2";my $kernel = 0;GetOptions('device=s' => \$dev,	   'ssid=s' => \$ssid,	   'gateway' => \$gateway,	   'ap!' => \$ap,	   'txf!' => \$txf,	   'rate-control=s' => \$rate_control,	   'kernel!' => \$kernel,	   ) or usage();if (! defined $dev) {    if (`/sbin/ifconfig ath0 2>&1` =~ /Device not found/) {	if (`/sbin/ifconfig wlan0 2>&1` =~ /Device not found/) {	} else {	    $dev = "wlan0";	}    } else {	$dev = "ath0";    }}if (! defined $dev) {    usage();}if ($gateway) {    $gateway = "true";} else{    $gateway = "false";}my $hostname = `hostname`;my $wireless_mac = mac_addr_from_dev($dev);my $suffix;if ($hostname =~ /rn-pdos(\S+)-wired/) {    $suffix = "0.0.$1";} else {    $suffix = mac_addr_to_ip($wireless_mac);}my $srcr_ip = "5." . $suffix;my $safe_ip = "6." . $suffix;my $rate_ip = "7." . $suffix;my $srcr_nm = "255.0.0.0";my $srcr_net = "5.0.0.0";my $srcr_bcast = "5.255.255.255";if (! defined $ssid) {    $ssid = "roofnet.$srcr_ip";}if ($wireless_mac eq "" or     $wireless_mac eq "00:00:00:00:00:00") {    print STDERR "got invalid mac address!";    exit -1;}$rawdev = $dev;if ($dev =~ /ath/) {    $rawdev = "${dev}raw";    system "/sbin/sysctl -w dev.$dev.rxfilter=0xff > /dev/null 2>&1";    system "/sbin/sysctl -w dev.$dev.rawdev_type=2 > /dev/null 2>&1";    system "/sbin/sysctl -w dev.$dev.rawdev=1 > /dev/null 2>&1";    system "/sbin/ifconfig $rawdev up";}my $iwconfig = "/home/roofnet/bin/iwconfig";if (-f "/sbin/iwconfig") {    $iwconfig = "/sbin/iwconfig";}if ($dev =~ /wlan/) {    system "/sbin/ifconfig $dev mtu 1800";#    system "/home/roofnet/scripts/prism2_param $dev ptype 6";    system "/home/roofnet/scripts/prism2_param $dev pseudo_ibss 1";    system "$iwconfig $dev mode ad-hoc";#    system "/home/roofnet/scripts/prism2_param $dev monitor_type 1";    system "$iwconfig $dev essid $ssid";    system "$iwconfig $dev rts off";    system "$iwconfig $dev retries 16";    # make sure we broadcast at a fixed power    system "/home/roofnet/scripts/prism2_param $dev alc 0";    system "$iwconfig $dev txpower 23";    system "/sbin/ifconfig $dev up";}# force the interface up if ($dev =~ /ath/) {    system "/sbin/ifconfig $dev up txqueuelen 5";    system "$iwconfig $dev channel 6";}my $mode = "b";my $iwconfig_result = `$iwconfig $dev 2>/dev/null`;if ($iwconfig_result =~ /Frequency:(\d+)\.(\d+)GHz/) {    my $channel = "$1.$2";    if ($channel > 5.0) {	$mode = "a";    } elsif ($dev =~ /ath/) {	$mode = "g";    }}print STDERR "using mode $mode\n";system "/sbin/modprobe tun > /dev/null 2>&1";

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -