aboutsummaryrefslogtreecommitdiffstats
path: root/sysconfig
diff options
context:
space:
mode:
authorBill Nottingham <notting@redhat.com>2001-07-11 05:23:56 +0000
committerBill Nottingham <notting@redhat.com>2001-07-11 05:23:56 +0000
commit3b86e2508b13f4bd6339f7be708a2cf1eab99a44 (patch)
tree9cab5aea5252b6fc072670e92fd2f07cede5ed9d /sysconfig
parentd4b006581428be84473825bf5d31ed81f6c4a647 (diff)
downloadinitscripts-3b86e2508b13f4bd6339f7be708a2cf1eab99a44.tar
initscripts-3b86e2508b13f4bd6339f7be708a2cf1eab99a44.tar.gz
initscripts-3b86e2508b13f4bd6339f7be708a2cf1eab99a44.tar.bz2
initscripts-3b86e2508b13f4bd6339f7be708a2cf1eab99a44.tar.xz
initscripts-3b86e2508b13f4bd6339f7be708a2cf1eab99a44.zip
big ipv6 update from Pekka Savola (<pekkas@netcore.fi>)
Diffstat (limited to 'sysconfig')
-rwxr-xr-xsysconfig/network-scripts/ifdown2
-rwxr-xr-xsysconfig/network-scripts/ifdown-ipv6106
-rwxr-xr-xsysconfig/network-scripts/ifdown-sit77
-rwxr-xr-xsysconfig/network-scripts/ifup7
-rwxr-xr-xsysconfig/network-scripts/ifup-ipv6221
-rwxr-xr-xsysconfig/network-scripts/ifup-sit67
-rwxr-xr-xsysconfig/network-scripts/init.ipv6-global188
-rw-r--r--sysconfig/network-scripts/network-functions-ipv6971
8 files changed, 1263 insertions, 376 deletions
diff --git a/sysconfig/network-scripts/ifdown b/sysconfig/network-scripts/ifdown
index c63864bb..1cd03d7c 100755
--- a/sysconfig/network-scripts/ifdown
+++ b/sysconfig/network-scripts/ifdown
@@ -48,7 +48,7 @@ fi
check_device_down ${DEVICE} && exit 0
if [ "${NETWORKING_IPV6}" = "yes" ]; then
- /etc/sysconfig/network-scripts/ifdown-ipv6 $DEVICE
+ /etc/sysconfig/network-scripts/ifdown-ipv6 ${CONFIG}
fi
retcode=0
diff --git a/sysconfig/network-scripts/ifdown-ipv6 b/sysconfig/network-scripts/ifdown-ipv6
index 45c7f24d..d111d1cb 100755
--- a/sysconfig/network-scripts/ifdown-ipv6
+++ b/sysconfig/network-scripts/ifdown-ipv6
@@ -6,9 +6,27 @@
# Taken from:
# (P) & (C) 2000-2001 by Peter Bieringer <pb@bieringer.de>
#
-# Version 2001-02-08
+# RHL integration assistance by Pekka Savola <pekkas@netcore.fi>
+#
+# Version 2001-05-22d
+#
+# Uses following information from /etc/sysconfig/network:
+# NETWORKING_IPV6=yes|no: controls IPv6 initialization (global setting)
+#
+# Uses following information from /etc/sysconfig/network-scripts/ifcfg-$1:
+# IPV6INIT=yes|no: controls IPv6 configuration for this interface
+#
+# Optional for 6to4 tunneling:
+# IPV6TO4_RELAY=<ipv4address>: IPv4 address of the remote 6to4 relay
+# IPV6TO4_ROUTING="eth0-:f101::0/64 eth1-:f102::0/64": information to setup local subnetting
+# IPV6TO4_CONTROL_RADVD=yes|no: controls radvd triggering [optional]
+# IPV6TO4_RADVD_PIDFILE=file: PID file of radvd for sending signals, default is "/var/run/radvd/radvd.pid" [optional]
+#
+# Requirements for 6to4 if using radvd:
+# radvd-0.6.2p3 or newer supporting option "Base6to4Interface"
#
+
. /etc/sysconfig/network
cd /etc/sysconfig/network-scripts
@@ -18,42 +36,68 @@ CONFIG=$1
[ -f "$CONFIG" ] || CONFIG=ifcfg-$CONFIG
source_config
-# Test if IPv6 configuration is enabled
-if [ ! "$IPV6INIT" = "yes" ]; then
- # not enabled, stop here
- exit 0
+# Test if IPv6 is globally enabled
+if [ ! "${NETWORKING_IPV6}" = "yes" ]; then
+ # Global IPv6 switch not enabled, end now
+ exit 0
+fi
+
+if [ ! -f /etc/sysconfig/network-scripts/network-functions-ipv6 ]; then
+ # IPv6 setup isn't well
+ exit 1
fi
-
-# Test if IPv6 is up
-if [ "${NETWORKING_IPV6}" = "yes" ]; then
- . /etc/sysconfig/network-scripts/network-functions-ipv6
+# Source IPv6 helper functions
+. /etc/sysconfig/network-scripts/network-functions-ipv6
+
+# IPv6 test, no module loaded, exit if system is not IPv6-ready
+test_ipv6 testonly || exit 0
- # Delete additional static IPv6 routes on specified interface
- if [ -f /etc/sysconfig/static-routes-ipv6 ]; then
- grep "^$DEVICE" /etc/sysconfig/static-routes-ipv6 | while read device args; do
- if [ "$device" = "$DEVICE" ]; then
- ifdown_ipv6_route $args $DEVICE
+
+# Switch some sysctls to secure mode
+sysctl -w net.ipv6.conf.$DEVICE.forwarding=0 >/dev/null
+sysctl -w net.ipv6.conf.$DEVICE.accept_ra=0 >/dev/null
+sysctl -w net.ipv6.conf.$DEVICE.accept_redirects=0 >/dev/null
+
+# Shutdown of 6to4, if configured
+valid6to4config="yes"
+if [ -z "$IPV6TO4_RELAY" ]; then
+ valid6to4config="no"
+fi
+if [ "$valid6to4config" = "yes" ]; then
+ if [ "$IPV6TO4_CONTROL_RADVD" = "yes" ]; then
+ # stop RADVD from distributing no longer usable 6to4 prefixes
+ if [ -z "$IPV6TO4_RADVD_PIDFILE" ]; then
+ # Take default
+ IPV6TO4_RADVD_PIDFILE="/var/run/radvd/radvd.pid"
+ fi
+ # Send SIGHUP to radvd
+ if [ -f "$IPV6TO4_RADVD_PIDFILE" ]; then
+ pid="`cat $IPV6TO4_RADVD_PIDFILE`"
+ if [ ! -z "$pid" ]; then
+ # still waiting for feature enabling: stopping distribution of prefixes in RADVD....
+ # kill -SOMETHING $pid
+ false
+ else
+ false
fi
- done
+ fi
fi
- # Switch off forwarding per device (packets received on this
- # interface aren't forwarded
- forwarding_ipv6 no $DEVICE
-
- # Delete additional IPv6 addresses from list
- if [ ! -z "$IPV6ADDR_SECONDARIES" ]; then
- for ipv6addr in $IPV6ADDR_SECONDARIES; do
- ifdown_ipv6_real $DEVICE $ipv6addr
+ if [ ! -z "$IPV6TO4_ROUTING" ]; then
+ # Delete routes to local networks
+ for devsuf in $IPV6TO4_ROUTING; do
+ dev="`echo $devsuf | awk -F- '{ print $1 }'`"
+ ifdown_ipv6_route_all $dev ::
done
fi
-
- # Shutdown basic configured IPv6 address on specified interface
- if ! [ -z "$IPV6ADDR" ]; then
- ifdown_ipv6_real $DEVICE $IPV6ADDR
- fi
- # Cleanup all IPv6 configuration on specified interface (prevents from kernel crashing)
- ifdown_ipv6_real_all $DEVICE
-fi
+ # Delete all static IPv6to4 routes
+ ifdown_ipv6_route_all sit0 ::$IPV6TO4_RELAY
+
+ # Delete all configured 6to4 address
+ ifdown_ipv6to4_all sit0
+fi
+
+# Delete all current configured IPv6 addresses on this interface
+ifdown_ipv6_real_all $DEVICE
diff --git a/sysconfig/network-scripts/ifdown-sit b/sysconfig/network-scripts/ifdown-sit
index a70d5169..a2a70c16 100755
--- a/sysconfig/network-scripts/ifdown-sit
+++ b/sysconfig/network-scripts/ifdown-sit
@@ -6,13 +6,24 @@
# Taken from:
# (P) & (C) 2000-2001 by Peter Bieringer <pb@bieringer.de>
#
-# Version 2001-02-08
+# RHL integration assistance by Pekka Savola <pekkas@netcore.fi>
+#
+# Version 2001-05-22d
+#
+# Uses following information from /etc/sysconfig/network:
+# NETWORKING_IPV6=yes|no: controls IPv6 initialization (global setting)
+#
+# Uses following information from "/etc/sysconfig/network-scripts/ifcfg-$1":
+# For static tunnels
+# IPV6TUNNELIPV4="<ipv4 address of foreign tunnel endpoint>"
+# IPV6ADDR=<ipv6address>/<prefixlength> [OPTIONAL: numbered tunnels]
#
-# Filter tags (for stripping, empty lines following if all is stripped)
+# Get global network configuration
. /etc/sysconfig/network
+# Source IPv4 helper functions
cd /etc/sysconfig/network-scripts
. network-functions
@@ -20,33 +31,43 @@ CONFIG=$1
[ -f "$CONFIG" ] || CONFIG=ifcfg-$CONFIG
source_config
-# Test if IPv6 configuration is enabled for this interface
-if [ ! "$IPV6INIT" = "yes" ]; then
- # not enabled, stop here
- exit 0
-fi
-
# Test if IPv6 is up
-if [ "${NETWORKING_IPV6}" = "yes" ]; then
-
- . /etc/sysconfig/network-scripts/network-functions-ipv6
-
- # Delete IPv6-in-IPv4 tunnel(s)
- if [ "$DEVICE" = "sit0" ]; then
- ifdown_ipv6_autotunnel
- elif [ ! -z "$IPV6TUNNELIPV4" ]; then
- # Delete static IPv6 tunnel routes on specified virtual interface
- if [ -f /etc/sysconfig/static-routes-ipv6 ]; then
- grep "^$DEVICE" /etc/sysconfig/static-routes-ipv6 | while read device ipv6route args; do
- if [ "$device" = "$DEVICE" ]; then
- ifdown_ipv6_tunnel $DEVICE $IPV6TUNNELIPV4 $ipv6route
- fi
- done
+if [ ! "${NETWORKING_IPV6}" = "yes" ]; then
+ # Global IPv6 switch not enabled, end now
+ exit 0
+fi
+
+if [ ! -f /etc/sysconfig/network-scripts/network-functions-ipv6 ]; then
+ # IPv6 setup isn't well
+ exit 1
+fi
+
+# Source IPv6 helper functions
+. /etc/sysconfig/network-scripts/network-functions-ipv6
+
+# IPv6 test, no module loaded, exit if system is not IPv6-ready
+test_ipv6 testonly || exit 0
+
+# Delete IPv6-in-IPv4 tunnel(s)
+if [ "$DEVICE" = "sit0" ]; then
+ ifdown_ipv6_autotunnel
+elif [ ! -z "$IPV6TUNNELIPV4" ]; then
+ if [ "$IPV6_TUNNELMODE" = "NBMA" ]; then
+ if [ ! -z "$IPV6ADDR" ]; then
+ # Numbered tunnel
+ ifdown_ipv6_real sit0 $IPV6ADDR
fi
- if [ ! -z "$IPV6ADDR" ]; then
- # Numbered tunnel
- ifdown_ipv6_real sit0 $IPV6ADDR
+ # Cleanup all IPv6 tunnel configuration on specified interface and shut down sit0, if no longer used
+ ifdown_ipv6_tunnel_all $DEVICE $IPV6TUNNELIPV4
+
+ elif [ -z "$IPV6_TUNNELMODE" -o "$IPV6_TUNNELMODE" = "IP" ]; then
+ # Delete all IPv6 routes and addresses
+ ifdown_ipv6_real_all $DEVICE
+
+ # Shut down tunnel device
+ ifdown_ipv6_tunneldev $DEVICE
+ else
+ echo $"Tunnel creation mode '$IPV6_TUNNELMODE' not supported - skip!"
fi
- fi
-fi
+fi
diff --git a/sysconfig/network-scripts/ifup b/sysconfig/network-scripts/ifup
index 6a418d40..214f42ea 100755
--- a/sysconfig/network-scripts/ifup
+++ b/sysconfig/network-scripts/ifup
@@ -167,7 +167,7 @@ if [ -n "${DYNCONFIG}" ]; then
if [ -x /sbin/dhcpcd ] && /sbin/dhcpcd ${DHCPCDARGS} ${DEVICE} ; then
echo $" done."
- elif [ -x /sbin/pump ] && /sbin/pump ${PUMPARGS} -i ${DEVICE} ; then
+ elif [ -x /sbin/pump ] && /sbin/pump ${PUMPARGS} -i ${DEVICE}; then
echo $" done."
else
echo $" failed."
@@ -180,6 +180,9 @@ else
if [ -z "${IPADDR}" ]; then
# enable device without IP, useful for e.g. PPPoE
ip link set ${DEVICE} up
+ if [ "${NETWORKING_IPV6}" = "yes" ]; then
+ /etc/sysconfig/network-scripts/ifup-ipv6 ${CONFIG}
+ fi
exec /etc/sysconfig/network-scripts/ifup-post ${CONFIG} ${2}
fi
@@ -246,7 +249,7 @@ fi
# IPv6 initialisation?
if [ "${NETWORKING_IPV6}" = "yes" ]; then
- /etc/sysconfig/network-scripts/ifup-ipv6 $DEVICE
+ /etc/sysconfig/network-scripts/ifup-ipv6 ${CONFIG}
fi
exec /etc/sysconfig/network-scripts/ifup-post ${CONFIG} ${2}
diff --git a/sysconfig/network-scripts/ifup-ipv6 b/sysconfig/network-scripts/ifup-ipv6
index 4ee50e1e..b8a5c71c 100755
--- a/sysconfig/network-scripts/ifup-ipv6
+++ b/sysconfig/network-scripts/ifup-ipv6
@@ -6,13 +6,40 @@
# Taken from:
# (P) & (C) 2000-2001 by Peter Bieringer <pb@bieringer.de>
#
-# Version 2001-03-03
+# RHL integration assistance by Pekka Savola <pekkas@netcore.fi>
+#
+# Version 2001-05-22d
+#
+# Uses following information from "/etc/sysconfig/network":
+# NETWORKING_IPV6=yes|no: controls IPv6 initialization (global setting)
+#
+# Uses following information from "/etc/sysconfig/network-scripts/ifcfg-$1":
+# IPV6INIT=yes|no: controls IPv6 configuration for this interface
+# IPV6ADDR=<ipv6address>/<prefixlength>: specify primary static IPv6 address here
+# IPV6ADDR_SECONDARIES="<list of ipv6 addresses>" [optional]
+# IPV6_ROUTER=yes|no: controls IPv6 autoconfiguration (no: multi-homed interface without routing)
+# IPV6_AUTOCONF=yes|no: controls IPv6 autoconfiguration
+# defaults:
+# IPV6FORWARDING=yes: IPV6_AUTOCONF=no, IPV6_ROUTER=yes
+# IPV6FORWARDING=no: IPV6_AUTOCONF=yes
+#
+# Optional for 6to4 tunneling:
+# IPV6TO4INIT=yes|no: controls 6to4 tunneling setup
+# IPV6TO4_RELAY=<ipv4address>: IPv4 address of the remote 6to4 relay
+# IPV6TO4_IPV4ADDR=<ipv6address>: overwrite local IPv4 address [optional]
+# IPV6TO4_ROUTING="eth0-:f101::0/64 eth1-:f102::0/64": information to setup local subnetting
+# IPV6TO4_CONTROL_RADVD=yes|no: controls radvd triggering [optional]
+# IPV6TO4_RADVD_PIDFILE=file: PID file of radvd for sending signals, default is "/var/run/radvd/radvd.pid" [optional]
+#
+# Requirements for 6to4 if using radvd:
+# radvd-0.6.2p3 or newer supporting option "Base6to4Interface"
#
-# Filter tags (for stripping, empty lines following if all is stripped)
+# Get global network configuration
. /etc/sysconfig/network
+# Source IPv4 helper functions
cd /etc/sysconfig/network-scripts
. network-functions
@@ -27,43 +54,171 @@ if [ ! "$IPV6INIT" = "yes" ]; then
fi
# Test if IPv6 is up
-if [ "${NETWORKING_IPV6}" = "yes" ]; then
+if [ ! "${NETWORKING_IPV6}" = "yes" ]; then
+ # Global IPv6 switch not enabled, end now
+ exit 0
+fi
+
+if [ ! -f /etc/sysconfig/network-scripts/network-functions-ipv6 ]; then
+ # IPv6 setup isn't well
+ exit 1
+fi
- . /etc/sysconfig/network-scripts/network-functions-ipv6
+# Source IPv6 helper functions
+. /etc/sysconfig/network-scripts/network-functions-ipv6
+
+# IPv6 test, module loaded, exit if system is not IPv6-ready
+test_ipv6 || exit 1
- # Run basic IPv6 test (and make sure the ipv6 module will be loaded)
- test_ipv6 || exit 0
- # Setup IPv6 address on specified interface
- if ! [ -z "$IPV6ADDR" ]; then
- ifup_ipv6_real $DEVICE $IPV6ADDR
+# Setup IPv6 address on specified interface
+if ! [ -z "$IPV6ADDR" ]; then
+ ifup_ipv6_real $DEVICE $IPV6ADDR
+fi
+
+# Get current global IPv6 forwarding
+ipv6_global_forwarding_current="`sysctl -n net.ipv6.conf.all.forwarding`"
+
+# Set some proc switches depending on defines
+if [ "$IPV6FORWARDING" = "yes" ]; then
+ # Global forwarding should be enabled
+
+ # Check, if global IPv6 forwarding was already set by global script
+ if [ $ipv6_global_forwarding_current -ne 1 ]; then
+ # Forwarding enabled, but not set, display warning
+ echo $"Global IPv6 forwarding is enabled in configuration, but not currently enabled in kernel"
+ echo $"Please restart network with '/etc/rc.d/init.d/network restart'"
fi
-
- # Switch forwarding per device like defined
- # Packets received on selected interface are forwarded
- if ! [ -z "$IPV6FORWARDING" ]; then
- if [ "$IPV6FORWARDING" = "yes" ]; then
- forwarding_ipv6 yes $DEVICE
- # also for all (otherwise, nothing is forwarded)
- forwarding_ipv6 yes
- else
- forwarding_ipv6 no $DEVICE
- fi
+
+ ipv6_local_forwarding=1
+ ipv6_local_auto=0
+ if [ "$IPV6_ROUTER" = "no" ]; then
+ # Interface should not act as a Router
+ ipv6_local_forwarding=0
fi
-
- # Setup additional IPv6 addresses from list
- if [ ! -z "$IPV6ADDR_SECONDARIES" ]; then
- for ipv6addr in $IPV6ADDR_SECONDARIES; do
- ifup_ipv6_real $DEVICE $ipv6addr
- done
+ if [ "$IPV6_AUTOCONF" = "yes" ]; then
+ # Interface should be autoconfigured
+ ipv6_local_auto=1
+ fi
+else
+ # Global forwarding should be disabled
+
+ # Check, if global IPv6 forwarding was already set by global script
+ if [ $ipv6_global_forwarding_current -ne 0 ]; then
+ # Forwarding disabled, but not set, display warning
+ echo $"Global IPv6 forwarding is disabled in configuration, but not currently disabled in kernel"
+ echo $"Please restart network with '/etc/rc.d/init.d/network restart'"
fi
- # Setup additional static IPv6 routes on specified interface
- if [ -f /etc/sysconfig/static-routes-ipv6 ]; then
- grep "^$DEVICE" /etc/sysconfig/static-routes-ipv6 | while read device args; do
- if [ "$device" = "$DEVICE" ]; then
- ifup_ipv6_route $args $DEVICE
+ ipv6_local_forwarding=0
+ ipv6_local_auto=1
+ if [ "$IPV6_AUTOCONF" = "no" ]; then
+ # Interface should not be autoconfigured
+ ipv6_local_auto=0
+ fi
+fi
+sysctl -w net.ipv6.conf.$DEVICE.forwarding=$ipv6_local_forwarding >/dev/null
+sysctl -w net.ipv6.conf.$DEVICE.accept_ra=$ipv6_local_auto >/dev/null
+sysctl -w net.ipv6.conf.$DEVICE.accept_redirects=$ipv6_local_auto >/dev/null
+
+# Setup additional IPv6 addresses from list
+if [ ! -z "$IPV6ADDR_SECONDARIES" ]; then
+ for ipv6addr in $IPV6ADDR_SECONDARIES; do
+ ifup_ipv6_real $DEVICE $ipv6addr
+ done
+fi
+
+# Setup additional static IPv6 routes on specified interface
+if [ -f /etc/sysconfig/static-routes-ipv6 ]; then
+ grep "^$DEVICE\W" /etc/sysconfig/static-routes-ipv6 | while read device args; do
+ if [ "$device" = "$DEVICE" ]; then
+ ifup_ipv6_route $args $DEVICE
+ fi
+ done
+fi
+
+# Setup of 6to4, if configured
+if [ "$IPV6TO4INIT" = "yes" ]; then
+ valid6to4config="yes"
+ if [ ! -z "$IPV6TO4_IPV4ADDR" ]; then
+ # Take special configured from config file (precedence 1)
+ ipv4addr="$IPV6TO4_IPV4ADDR"
+ else
+ # Get IPv4 address from interface first (has precedence 2)
+ ipv4addr="`LC_ALL=C ifconfig $DEVICE |grep "inet addr:" | tr : " " | awk '{ print $3 }'`"
+ if [ -z "$ipv4addr" ]; then
+ # Take configured from config file (precedence 3)
+ ipv4addr="$IPADDR"
+ fi
+ fi
+ if [ ! -z "$ipv4addr" ]; then
+ # Test for non-global IPv4 address
+ if ! testipv4_globalusable $ipv4addr; then
+ echo $"Given IPv4 address $ipv4addr is not a globally usable one, 6to4 configuration is not valid!"
+ valid6to4config="no"
+ fi
+ if [ -z "$IPV6TO4_RELAY" ]; then
+ echo $"IPv6to4 configuration needs an IPv6to4 relay address, 6to4 configuration is not valid!"
+ valid6to4config="no"
+ fi
+ if [ "$valid6to4config" = "yes" ]; then
+ if ! testipv4_globalusable $IPV6TO4_RELAY; then
+ echo $"Given IPv4 address of relay is not a globally usable one, 6to4 configuration is not valid!"
+ valid6to4config="no"
fi
- done
+ fi
+ else
+ echo $"IPv6to4 configuration needs an IPv4 address on related interface or extra specified, 6to4 configuration is not valid!"
+ valid6to4config="no"
fi
-fi
+ if [ "$valid6to4config" = "yes" ]; then
+ ifup_ipv6to4 $DEVICE $ipv4addr
+ if [ -f /etc/sysconfig/static-routes-ipv6 ]; then
+ grep "^sit0" /etc/sysconfig/static-routes-ipv6 | while read device args; do
+ if [ "$device" = "sit0" ]; then
+ ifup_ipv6_route $args ::$IPV6TO4_RELAY sit0
+ fi
+ done
+ fi
+
+ if [ "$IPV6TO4_CONTROL_RADVD" = "yes" ]; then
+ # RADVD is in use, so forwarding of IPv6 packets should be enabled
+ if [ $ipv6_global_forwarding_current -ne 1 ]; then
+ # Forwarding not set, display warning
+ echo $"Using 6to4 and RADVD IPv6 forwarding usually should be enabled, but it isn't!"
+ fi
+
+ if [ -z "$IPV6TO4_RADVD_PIDFILE" ]; then
+ # Take default
+ IPV6TO4_RADVD_PIDFILE="/var/run/radvd/radvd.pid"
+ fi
+
+ # Send SIGHUP to radvd
+ if [ -f "$IPV6TO4_RADVD_PIDFILE" ]; then
+ pid="`cat $IPV6TO4_RADVD_PIDFILE`"
+ if [ ! -z "$pid" ]; then
+ echo $"Trigger RADVD for IPv6to4 prefix recalculation"
+ kill -HUP $pid
+ else
+ false
+ fi
+ fi
+ if [ ! -z "$IPV6TO4_ROUTING" ]; then
+ # Generate 6to4 address
+ ipv6to4prefix="`create6to4prefix $ipv4addr`"
+ if [ ! -z "$ipv6to4prefix" ]; then
+ # Add route to local networks
+ for devsuf in $IPV6TO4_ROUTING; do
+ dev="`echo $devsuf | awk -F- '{ print $1 }'`"
+ suf="`echo $devsuf | awk -F- '{ print $2 }'`"
+ ifup_ipv6_route ${ipv6to4prefix}$suf :: $dev
+ done
+ else
+ echo $"Error occured while calculating the IPv6to4 prefix"
+ fi
+ else
+ echo $"RADVD control enabled, but config is not complete!"
+ fi
+ fi
+ fi
+fi
diff --git a/sysconfig/network-scripts/ifup-sit b/sysconfig/network-scripts/ifup-sit
index ff92aba1..baf78a66 100755
--- a/sysconfig/network-scripts/ifup-sit
+++ b/sysconfig/network-scripts/ifup-sit
@@ -6,13 +6,27 @@
# Taken from:
# (P) & (C) 2000-2001 by Peter Bieringer <pb@bieringer.de>
#
-# Version 2001-03-03
+# RHL integration assistance by Pekka Savola <pekkas@netcore.fi>
+#
+# Version 2001-05-22d
+#
+# Uses following information from "/etc/sysconfig/network":
+# NETWORKING_IPV6=yes|no: controls IPv6 initialization (global setting)
+#
+# Uses following information from "/etc/sysconfig/network-scripts/ifcfg-$1":
+# IPV6INIT=yes|no: controls IPv6 configuration for this interface
+# IPV6_TUNNELMODE=IP|NBMA: mode of tunnel creation [default: IP]
+#
+# For static tunnels
+# IPV6TUNNELIPV4="<ipv4 address of foreign tunnel endpoint>"
+# IPV6ADDR=<ipv6address>/<prefixlength> [OPTIONAL: numbered tunnels]
#
-# Filter tags (for stripping, empty lines following if all is stripped)
+# Get global network configuration
. /etc/sysconfig/network
+# Source IPv4 helper functions
cd /etc/sysconfig/network-scripts
. network-functions
@@ -22,22 +36,32 @@ source_config
# Test if IPv6 configuration is enabled for this interface
if [ ! "$IPV6INIT" = "yes" ]; then
- # not enabled, stop here
exit 0
fi
# Test if IPv6 is up
-if [ "${NETWORKING_IPV6}" = "yes" ]; then
-
- . /etc/sysconfig/network-scripts/network-functions-ipv6
+if [ ! "${NETWORKING_IPV6}" = "yes" ]; then
+ exit 0
+fi
+
+if [ ! -f /etc/sysconfig/network-scripts/network-functions-ipv6 ]; then
+ # IPv6 setup isn't well
+ exit 1
+fi
- # Run basic IPv6 test (and make sure the ipv6 module will be loaded)
- test_ipv6 || exit 0
+# Source IPv6 helper functions
+. /etc/sysconfig/network-scripts/network-functions-ipv6
- # Setup IPv6-in-IPv4 tunnel(s)
- if [ "$DEVICE" = "sit0" ]; then
- ifup_ipv6_autotunnel
- elif [ ! -z "$IPV6TUNNELIPV4" ]; then
+# IPv6 test, module loaded, exit if system is not IPv6-ready
+test_ipv6 || exit 1
+
+# Setup IPv6-in-IPv4 tunnel(s)
+if [ "$DEVICE" = "sit0" ]; then
+ ifup_ipv6_autotunnel || exit 1
+
+elif [ ! -z "$IPV6TUNNELIPV4" ]; then
+ if [ "$IPV6_TUNNELMODE" = "NBMA" ]; then
+ # NBMA-styled tunneling
if [ ! -z "$IPV6ADDR" ]; then
# Numbered tunnel
ifup_ipv6_real sit0 $IPV6ADDR
@@ -51,5 +75,22 @@ if [ "${NETWORKING_IPV6}" = "yes" ]; then
fi
done
fi
+ elif [ -z "$IPV6_TUNNELMODE" -o "$IPV6_TUNNELMODE" = "IP" ]; then
+ ifup_ipv6_tunneldev $DEVICE $IPV6TUNNELIPV4 || exit 1
+
+ if [ ! -z "$IPV6ADDR" ]; then
+ # Numbered tunnel
+ ifup_ipv6_real $DEVICE $IPV6ADDR
+ fi
+
+ if [ -f /etc/sysconfig/static-routes-ipv6 ]; then
+ grep "^$DEVICE\W" /etc/sysconfig/static-routes-ipv6 | while read device ipv6route args; do
+ if [ "$device" = "$DEVICE" ]; then
+ ifup_ipv6_route $ipv6route :: $DEVICE
+ fi
+ done
+ fi
+ else
+ echo $"Tunnel creation mode '$IPV6_TUNNELMODE' not supported - skip!"
fi
-fi
+fi
diff --git a/sysconfig/network-scripts/init.ipv6-global b/sysconfig/network-scripts/init.ipv6-global
new file mode 100755
index 00000000..da46d4ba
--- /dev/null
+++ b/sysconfig/network-scripts/init.ipv6-global
@@ -0,0 +1,188 @@
+#!/bin/sh
+#
+# init.ipv6-global
+#
+#
+# Taken from:
+# (P) & (C) 2001 by Peter Bieringer <pb@bieringer.de>
+#
+# RHL integration assistance by Pekka Savola <pekkas@netcore.fi>
+#
+# Version 2001-05-22d
+#
+# Calling parameters:
+# $1: action (currently supported: start|stop|showsysctl)
+# $2: position for start|stop (currently supported: pre|post)
+#
+# Called by hooks from /etc/rc.d/init.d/network
+#
+# Uses following information from /etc/sysconfig/network:
+# NETWORKING_IPV6=yes|no: controls global IPv6 initialization (default: no)
+# IPV6FORWARDING=yes|no: controls global IPv6 forwarding (default: no)
+# IPV6AUTOCONF=yes|no: controls global automatic IPv6 configuration
+# (default: yes if IPV6FORWARDING=no, no if IPV6FORWARDING=yes)
+# IPV6_AUTOTUNNEL=yes|no: controls automatic IPv6 tunneling (default: no)
+#
+
+
+
+# Get global network configuration
+. /etc/sysconfig/network
+
+# Source IPv4 helper functions
+cd /etc/sysconfig/network-scripts
+. network-functions
+
+# Get action and hook position
+ACTION="$1"
+POSITION="$2"
+
+# Test for IPv6 enabling
+if [ ! "${NETWORKING_IPV6}" = "yes" ]; then
+ exit 0
+fi
+
+if [ ! -f /etc/sysconfig/network-scripts/network-functions-ipv6 ]; then
+ exit 1
+fi
+
+# Source IPv6 helper functions
+. /etc/sysconfig/network-scripts/network-functions-ipv6
+
+# Initialize IPv6, depending on caller option
+case $ACTION in
+ start)
+ case $POSITION in
+ pre)
+ # IPv6 test, module loaded, exit if system is not IPv6-ready
+ test_ipv6 || exit 1
+
+
+ if [ "$IPV6FORWARDING" = "yes" ]; then
+ ipv6_global_forwarding=1
+ ipv6_global_auto=0
+ else
+ ipv6_global_forwarding=0
+ if [ "$IPV6AUTO" = "no" ]; then
+ ipv6_global_auto=0
+ else
+ ipv6_global_auto=1
+ fi
+ fi
+
+ # Reset IPv6 sysctl switches for "all", "default" and still existing devices
+ for i in /proc/sys/net/ipv6/conf/*; do
+ if [ ! -d $i ]; then
+ continue
+ fi
+ interface="`echo $i | awk -F/ '{ print $NF}'`"
+ # Host/Router behaviour for the interface
+ sysctl -w net.ipv6.conf.$interface.forwarding=$ipv6_global_forwarding >/dev/null
+
+ # Autoconfiguration and redirect handling for Hosts
+ sysctl -w net.ipv6.conf.$interface.accept_ra=$ipv6_global_auto >/dev/null
+ sysctl -w net.ipv6.conf.$interface.accept_redirects=$ipv6_global_auto >/dev/null
+ done
+
+ if [ "$IPV6_AUTOTUNNEL" = "yes" ]; then
+ ifup_ipv6_autotunnel
+ fi
+ ;;
+
+ post)
+ # IPv6 test, module loaded, exit if system is not IPv6-ready
+ test_ipv6 || exit 1
+
+
+ ## Add some routes which should never appear on the wire
+ # Unreachable IPv4-only addresses, normally blocked by source address selection
+ ip route add unreach ::ffff:0.0.0.0/96
+ # Unreachable IPv4-mapped addresses
+ ip route add unreach ::0.0.0.0/96
+ # Unreachable 6to4: IPv4 multicast, reserved, limited broadcast
+ ip route add unreach 2002:e000::/19
+ # Unreachable 6to4: IPv4 loopback
+ ip route add unreach 2002:7f00::/24
+ # Unreachable 6to4: IPv4 private (RFC1918)
+ ip route add unreach 2002:0a00::/24
+ ip route add unreach 2002:ac10::/28
+ ip route add unreach 2002:c0a8::/32
+ # Unreachable 6to4: IPv4 private (DHCP link-local)
+ ip route add unreach 2002:a9fe::/32
+ ;;
+
+ *)
+ echo "Usage: $0 $1 {pre|post}"
+ ;;
+
+ esac
+ ;;
+
+ stop)
+ case $POSITION in
+ pre)
+ # IPv6 test, no module loaded, exit if system is not IPv6-ready
+ test_ipv6 testonly || exit 0
+
+
+ ;;
+
+ post)
+ # IPv6 test, no module loaded, exit if system is not IPv6-ready
+ test_ipv6 testonly || exit 0
+
+
+ for i in /proc/sys/net/ipv6/conf/*; do
+ if [ ! -d $i ]; then
+ continue
+ fi
+ interface="`echo $i | awk -F/ '{ print $NF}'`"
+ # Assume Host behaviour
+ sysctl -w net.ipv6.conf.$interface.forwarding=0 >/dev/null
+
+ # Disable autoconfiguration and redirects
+ sysctl -w net.ipv6.conf.$interface.accept_ra=0 >/dev/null
+ sysctl -w net.ipv6.conf.$interface.accept_redirects=0 >/dev/null
+ done
+
+ # Find still existing tunnel devices and shutdown and delete them
+ LC_ALL=C ip tunnel | grep "ipv6/ip" | awk -F: '{ print $1 }' | while read device; do
+ ifdown_ipv6_tunneldev $device
+ done
+
+ ;;
+
+ *)
+ echo "Usage: $0 $1 {pre|post}"
+ ;;
+
+ esac
+ ;;
+
+ restart|reload)
+ # do nothing, will be handled by main script
+ ;;
+
+ showsysctl)
+ # Run only basic tests, no module is loaded, if not ok, skip IPv6 initialization
+ test_ipv6 testonly || exit 0
+
+ # Show sysctl switches
+ for i in /proc/sys/net/ipv6/conf/default/*; do
+ if [ ! -f $i ]; then continue; fi
+ switch="`echo $i | awk -F/ '{ print $NF}'`"
+ for j in /proc/sys/net/ipv6/conf/*; do
+ if [ ! -d $j ]; then continue; fi
+ interface="`echo $j | awk -F/ '{ print $NF}'`"
+ sysctl net.ipv6.conf.$interface.$switch
+ done
+ echo
+ done
+ ;;
+
+ *)
+ echo "Usage: $0 {start|stop|showsysctl}"
+ exit 1
+ ;;
+
+esac
diff --git a/sysconfig/network-scripts/network-functions-ipv6 b/sysconfig/network-scripts/network-functions-ipv6
index f9f87d29..6b4441a8 100644
--- a/sysconfig/network-scripts/network-functions-ipv6
+++ b/sysconfig/network-scripts/network-functions-ipv6
@@ -5,16 +5,12 @@
# Taken from:
# (P) & (C) 1997-2001 by Peter Bieringer <pb@bieringer.de>
#
-# Version: 2001-03-03b
+# Version: 2001-05-22d
#
# Extended address detection is enabled, if 'ipv6calc' is installed
# Available here: http://www.bieringer.de/linux/IPv6/tools/index.html#ipv6calc
#
-# Known bugs:
-# sit0 will not be shutdowned, if an additional IPv6 address was manually added to this device
-#
-# Filter tags (for stripping, empty lines following here if all is stripped)
@@ -24,85 +20,102 @@
# 1 = error occurs
# 2 = not enabled, i.e. no IPv6 kernel support or switched off by configuration
-##### Test for "ipv6calc" (can be used for better duplicate address detection)
+##### Test for "ipv6calc" (used for better existing address detection)
EXISTS_ipv6calc=no
if which ipv6calc >/dev/null 2>&1; then
- EXISTS_ipv6calc=yes
+ # do checks, whether ipv6calc does what was expected
+ if ipv6calc --if_inet62addr 3ffe04000100f1010000000000000001 40 | grep -q -v '3ffe:400:100:f101::1/64'; then
+ false
+ elif ipv6calc --addr2if_inet6 3ffe:400:100::1/64 | grep -q -v '3ffe0400010000000000000000000001 00 40'; then
+ false
+ else
+ EXISTS_ipv6calc=yes
+ fi
else
- true
+ false
fi
##### Test for IPv6 capabilites
+# $1: (optional) testflag: currently supported: "testonly" (do not load a module)
+test_ipv6() {
+ local testflag=$1
-function test_ipv6()
-{
# Test for IPv6 enabled kernel
if ! [ -f /proc/net/if_inet6 ]; then
- modprobe ipv6
-
- if ! [ -f /proc/net/if_inet6 ]; then
- echo $"Kernel is not compiled with IPv6 support"
+ if [ "$testflag" = "testonly" ]; then
return 2
+ else
+ modprobe ipv6
+
+ if ! [ -f /proc/net/if_inet6 ]; then
+ echo $"Kernel is not compiled with IPv6 support"
+ return 2
+ fi
fi
fi
+ if [ ! -d /proc/sys/net/ipv6/conf/ ]; then
+ # IPv6 related proc directory doesn't exist
+ return 2
+ fi
+
+ if ! which ip 2>&1 >/dev/null; then
+ echo $"Utility 'ip' (iproute-package) doesn't exist or isn't executable - non-NBMA-styled tunneling setup won't work!"
+ return 2
+ fi
+
return 0
}
-##### Control IPv6 forwarding
-# Display usage
-function forwarding_ipv6_usage() {
- echo $"Usage: $0 yes|no [device]"
+
+##### Get version of this function libary
+getversion_ipv6_functions() {
+ local version_ipv6_functions="`cat /etc/sysconfig/network-scripts/network-functions-ipv6 | grep "^# Version:" | awk '{ print $3 }' | sed 's/-//g' | sed 's/[A-Za-z]*$//g'`"
+ echo $version_ipv6_functions
}
+##### Control IPv6 forwarding
# Control IPv6 forwarding
# $1: control [yes|no|on|off]
-# $2: network device (if not given, global IPv6 forwarding is set)
-function forwarding_ipv6() {
- fw_control=$1
- fw_device=$2 # maybe empty
+# $2: network device (if not given, global IPv6 forwarding is set) [OBSOLETE]
+forwarding_ipv6() {
+ local fw_control=$1
+ local fw_device=$2 # maybe empty
if [ -z "$fw_control" ]; then
- echo $"Missing parameter 'forwarding control'"
- forwarding_ipv6_usage
+ echo $"Missing parameter 'forwarding control' (arg 1)"
return 1
fi
if ! [ "$fw_control" = "yes" -o "$fw_control" = "no" -o "$fw_control" = "on" -o "$fw_control" = "off" ]; then
- echo $"Don't understand forwarding control parameter '$fw_control'"
- forwarding_ipv6_usage
+ echo $"Don't understand forwarding control parameter '$fw_control' (arg 1)"
return 1
fi
- # Device "lo" need no IPv6 configuration
- if [ "$fw_device" = "lo" ]; then
- return 0;
- fi
-
# Run IPv6 test
- test_ipv6 || return
+ test_ipv6 || return 2
if [ "$fw_control" = "yes" -o "$fw_control" = "on" ]; then
- status=1
+ local status=1
else
- status=0
+ local status=0
fi
# Global control? (if no device is given)
if [ -z "$fw_device" ]; then
- sysctl -w net.ipv6.conf.all.forwarding=$status >/dev/null 2>&1
+ sysctl -w net.ipv6.conf.all.forwarding=$status >/dev/null
fi
- # Per device control
+ # Per device control (not implemented in kernel)
if [ ! -z "$fw_device" ]; then
- sysctl -w net.ipv6.conf.$fw_device.forwarding=$status >/dev/null 2>&1
+ echo $"IPv6 forwarding per device cannot be controlled via sysctl - use netfilter6 instead!"
fi
}
@@ -110,112 +123,144 @@ function forwarding_ipv6() {
##### Static IPv6 route configuration
-# Display usage
-function ifupdown_ipv6_route_usage() {
- echo $"Usage: $0 IPv6-network IPv6-gateway [device]"
-}
-
# Set static IPv6 route
# $1: IPv6 network to route
-# $2: IPv6 gateway over which $1 should be routed
+# $2: IPv6 gateway over which $1 should be routed (if "::", gw will be skipped)
# $3: Interface (optional)
-function ifup_ipv6_route() {
- networkipv6=$1
- gatewayipv6=$2
- device=$3 # maybe empty
+ifup_ipv6_route() {
+ local networkipv6=$1
+ local gatewayipv6=$2
+ local device=$3 # maybe empty
if [ -z "$networkipv6" ]; then
- echo $"Missing parameter 'IPv6-network'"
- ifupdown_ipv6_route_usage
+ echo $"Missing parameter 'IPv6-network' (arg 1)"
return 1
fi
if [ -z "$gatewayipv6" ]; then
- echo $"Missing parameter 'IPv6-gateway'"
- ifupdown_ipv6_route_usage
+ echo $"Missing parameter 'IPv6-gateway' (arg 2)"
return 1
fi
- # Device "lo" need no IPv6 configuration
- if [ "$device" = "lo" ]; then
- return 0;
- fi
-
# Run IPv6 test
- test_ipv6 || return
+ test_ipv6 || return 2
+
+ # Test, whether given IPv6 address is valid
+ if ! testipv6_valid $networkipv6; then
+ return 2
+ fi
+ if ! testipv6_valid $gatewayipv6; then
+ return 2
+ fi
if [ -z "$device" ]; then
- output="`LC_ALL=C route -A inet6 add $networkipv6 gw $gatewayipv6 2>&1`"
- if [ $? -ne 0 ]; then
- if echo $output | grep -i -q 'SIOCADDRT: File exists'; then
- true
- else
- echo $output
- fi
- fi
+ local output="`LC_ALL=C route -A inet6 add $networkipv6 gw $gatewayipv6 2>&1`"
else
- output="`LC_ALL=C route -A inet6 add $networkipv6 gw $gatewayipv6 dev $device 2>&1`"
- if [ $? -ne 0 ]; then
- if echo $output | grep -i -q 'SIOCADDRT: File exists'; then
- true
- else
- echo $output
- fi
- fi
+ if [ "$gatewayipv6" = "::" ]; then
+ local output="`LC_ALL=C route -A inet6 add $networkipv6 dev $device 2>&1`"
+ else
+ local output="`LC_ALL=C route -A inet6 add $networkipv6 gw $gatewayipv6 dev $device 2>&1`"
+ fi
+ fi
+
+ if [ $? -ne 0 ]; then
+ if echo $output | grep -i -q 'SIOCADDRT: File exists'; then
+ true
+ else
+ echo $output
+ return 2
+ fi
fi
+ return 0
}
-# Delete static IPv6 route
+# Delete a static IPv6 route
# $1: IPv6 network to route
-# $2: IPv6 gateway over which $1 should be routed
+# $2: IPv6 gateway over which $1 should be routed (if "::", gw will be skipped)
# $3: Interface (optional)
-function ifdown_ipv6_route() {
- networkipv6=$1
- gatewayipv6=$2
- device=$3 # maybe empty
+ifdown_ipv6_route() {
+ local networkipv6=$1
+ local gatewayipv6=$2
+ local device=$3 # maybe empty
if [ -z "$networkipv6" ]; then
- echo $"Missing parameter 'IPv6-network'"
- ifup_ipv6_route_usage
+ echo $"Missing parameter 'IPv6-network' (arg 1)"
return 1
fi
if [ -z "$gatewayipv6" ]; then
- echo $"Missing parameter 'IPv6-gateway'"
- ifup_ipv6_route_usage
+ echo $"Missing parameter 'IPv6-gateway' (arg 2)"
return 1
fi
- # Device "lo" need no IPv6 configuration
- if [ "$device" = "lo" ]; then
- return 0;
- fi
-
# Run IPv6 test
- test_ipv6 || return
+ test_ipv6 || return 2
+
+ # Test, whether given IPv6 address is valid
+ if ! testipv6_valid $networkipv6; then
+ return 2
+ fi
+ if ! testipv6_valid $gatewayipv6; then
+ return 2
+ fi
if [ -z "$device" ]; then
- output="`LC_ALL=C route -A inet6 del $networkipv6 gw $gatewayipv6 2>&1`"
- if [ $? -ne 0 ]; then
- if echo $output | grep -i -q 'SIOCDELRT: No such process'; then
- true
- else
- echo $output
- fi
- fi
+ local output="`LC_ALL=C route -A inet6 del $networkipv6 gw $gatewayipv6 2>&1`"
else
- output="`LC_ALL=C route -A inet6 del $networkipv6 gw $gatewayipv6 dev $device 2>&1`"
- if [ $? -ne 0 ]; then
- if echo $output | grep -i -q 'SIOCDELRT: No such process'; then
- true
- else
- echo $output
+ if [ "$gatewayipv6" = "::" ]; then
+ local output="`LC_ALL=C route -A inet6 del $networkipv6 dev $device 2>&1`"
+ else
+ local output="`LC_ALL=C route -A inet6 del $networkipv6 gw $gatewayipv6 dev $device 2>&1`"
+ fi
+ fi
+
+ if [ $? -ne 0 ]; then
+ if echo $output | grep -i -q 'SIOCDELRT: No such process'; then
+ true
+ else
+ echo $output
+ return 2
+ fi
+ fi
+
+ return 0
+}
+
+# Delete all static IPv6 routes through a given interface
+# $1: Interface
+# $2: Gateway match (optional)
+ifdown_ipv6_route_all() {
+ local device=$1
+ local gatewaymatch=$2
+
+ if [ -z "$device" ]; then
+ echo $"Missing parameter 'device' (arg 1)"
+ return 1
+ fi
+
+ # Run IPv6 test
+ test_ipv6 || return 2
+
+
+ # Get all IPv6 routes through given interface and remove them
+ LC_ALL=C route -A inet6 -n | grep "$device\W*$" | while read ipv6net nexthop flags metric ref use iface args; do
+ if [ "$iface" = "$device" ]; then
+ if [ ! -z "$gatewaymatch" ]; then
+ # Test if given gateway matches
+ if [ "$gatewaymatch" != "$nexthop" ]; then
+ # No match, take next
+ continue
fi
fi
- fi
+ # Only non addrconf (automatic installed) routes should be removed
+ if echo $flags | grep -v -q "A"; then
+ local output="`LC_ALL=C route -A inet6 del $ipv6net gw $nexthop dev $iface 2>&1`"
+ fi
+ fi
+ done
}
@@ -223,107 +268,121 @@ function ifdown_ipv6_route() {
##### automatic tunneling configuration
## Configure automatic tunneling up
-function ifup_ipv6_autotunnel() {
-
+ifup_ipv6_autotunnel() {
# Run IPv6 test
- test_ipv6 || return
+ test_ipv6 || return 2
# enable IPv6-over-IPv4 tunnels
- if LC_ALL=C ifconfig sit0 | grep -q "UP "; then
+ if test_interface_status sit0; then
# already up, do nothing
true
else
# basic tunnel device to up
ifconfig sit0 up
- # Switch on forwarding
- forwarding_ipv6 on sit0
+ # Test, whether "up" has worked
+ if ! test_interface_status sit0; then
+ echo $"Tunnel device 'sit0' enabling didn't work - FATAL ERROR!"
+ return 2
+ fi
+
+ # Set sysctls proper (regardless "default")
+ sysctl -w net.ipv6.conf.sit0.forwarding=1 >/dev/null
+ sysctl -w net.ipv6.conf.sit0.accept_ra=0 >/dev/null
+ sysctl -w net.ipv6.conf.sit0.accept_redirects=0 >/dev/null
fi
+ return 0
}
## Configure automatic tunneling down
-function ifdown_ipv6_autotunnel() {
-
+ifdown_ipv6_autotunnel() {
# Run IPv6 test
- test_ipv6 || return
+ test_ipv6 || return 2
- if LC_ALL=C ifconfig sit0 | grep -q "UP "; then
+ if test_interface_status sit0; then
# still up?
# disable IPv6-over-IPv4 tunnels (if a tunnel is no longer up)
- if LC_ALL=C route -n -A inet6 -n | grep sit0 | awk '{ print $2 }' | grep -v -q "^::$"; then
+ if LC_ALL=C route -A inet6 -n | grep "sit0\W*$" | awk '{ print $2 }' | grep -v -q "^::$"; then
# still existing routes, skip shutdown of sit0
true
- elif LC_ALL=C ifconfig sit0 | grep 'inet6 addr:' | awk '{ print $3 }' | grep -v -q '^::'; then
+ elif LC_ALL=C ip addr show dev sit0 | grep inet6 | awk '{ print $2 }' | grep -v -q '^::'; then
# still existing IPv6 addresses, skip shutdown of sit0
true
else
# basic tunnel device to down
- # Switch off forwarding
- forwarding_ipv6 off sit0
+ # Set sysctls proper
+ sysctl -w net.ipv6.conf.sit0.forwarding=0 >/dev/null
+ sysctl -w net.ipv6.conf.sit0.accept_ra=0 >/dev/null
+ sysctl -w net.ipv6.conf.sit0.accept_redirects=0 >/dev/null
ifconfig sit0 down
+
+ # Test, whether "down" has worked
+ if test_interface_status sit0; then
+ echo $"Tunnel device 'sit0' is still up - FATAL ERROR!"
+ return 2
+ fi
fi
fi
+ return 0
}
-##### static tunneling configuration
-
-function ifupdown_ipv6_tunnel_usage() {
- echo $"Usage: $0 interfacename IPv4-tunneladdress IPv6-route"
-}
-
+##### static NBMA-styled tunnel configuration
## Configure static tunnels up
# $1: Interface (not needed - dummy)
# $2: IPv4 address of foreign tunnel
# $3: IPv6 route through this tunnel
-function ifup_ipv6_tunnel() {
- device=$1
- addressipv4tunnel=$2
- routeipv6=$3
+ifup_ipv6_tunnel() {
+ local device=$1
+ local addressipv4tunnel=$2
+ local routeipv6=$3
if [ -z "$device" ]; then
- echo $"Missing parameter 'device'"
- ifupdown_ipv6_tunnel_usage
+ echo $"Missing parameter 'device' (arg 1)"
return 1
fi
if [ -z "$addressipv4tunnel" ]; then
- echo $"Missing parameter 'IPv4-tunneladdress'"
- ifupdown_ipv6_tunnel_usage
+ echo $"Missing parameter 'IPv4-tunneladdress' (arg 2)"
return 1
fi
if [ -z "$routeipv6" ]; then
- echo $"Missing parameter 'IPv6-route'"
- ifupdown_ipv6_tunnel_usage
+ echo $"Missing parameter 'IPv6-route' (arg 3)"
return 1
fi
-
+
# Run IPv6 test
- test_ipv6 || return
+ test_ipv6 || return 2
+
+ # Test, whether given IPv6 address is valid
+ if ! testipv6_valid $routeipv6; then
+ return 2
+ fi
+
# enable general IPv6-over-IPv4 tunneling
ifup_ipv6_autotunnel
+ if [ $? -ne 0 ]; then
+ return 2
+ fi
- # Set up a tunnel
- output="`LC_ALL=C route -A inet6 add $routeipv6 gw ::$addressipv4tunnel dev sit0 2>&1`"
+ # Set up a tunnel
+ ifup_ipv6_route $routeipv6 ::$addressipv4tunnel sit0
if [ $? -ne 0 ]; then
- if echo $output | grep -i -q 'SIOCADDRT: File exists'; then
- true
- else
- echo $output
- fi
+ return 2
fi
+ return 0
}
@@ -331,41 +390,37 @@ function ifup_ipv6_tunnel() {
# $1: Interface (not used - dummy)
# $2: IPv4 address of foreign tunnel
# $3: IPv6 route through this tunnel
-function ifdown_ipv6_tunnel() {
- device=$1
- addressipv4tunnel=$2
- routeipv6=$3
+ifdown_ipv6_tunnel() {
+ local device=$1
+ local addressipv4tunnel=$2
+ local routeipv6=$3
if [ -z "$device" ]; then
- echo $"Missing parameter 'device'"
+ echo $"Missing parameter 'device' (arg 1)"
ifupdown_ipv6_tunnel_usage
return 1
fi
if [ -z "$addressipv4tunnel" ]; then
- echo $"Missing parameter 'IPv4-tunneladdress'"
+ echo $"Missing parameter 'IPv4-tunnel address' (arg 2)"
ifupdown_ipv6_tunnel_usage
return 1
fi
if [ -z "$routeipv6" ]; then
- echo $"Missing parameter 'IPv6-route'"
+ echo $"Missing parameter 'IPv6-route' (arg 3)"
ifupdown_ipv6_tunnel_usage
return 1
fi
# Run IPv6 test
- test_ipv6 || return
+ test_ipv6 || return 2
- # Set up a tunnel
- output="`LC_ALL=C route -A inet6 del $routeipv6 gw ::$addressipv4tunnel dev sit0 2>&1`"
+ # Delete a NBMA-styled tunnel
+ ifdown_ipv6_route $routeipv6::$addressipv4tunnel sit0
if [ $? -ne 0 ]; then
- if echo $output | grep -i -q 'SIOCDELRT: No such process'; then
- true
- else
- echo $output
- fi
+ return 2
fi
# disable IPv6-over-IPv4 tunneling (if no longer a tunnel is up)
@@ -377,23 +432,26 @@ function ifdown_ipv6_tunnel() {
## Remove all IPv6 tunnels for a given tunnel endpoint
# $1: Interface (not used - dummy)
# $2: IPv4-tunneladdress
-function ifdown_ipv6_tunnel_all() {
- idtuall_device=$1
- idtuall_tunnel=$2
+ifdown_ipv6_tunnel_all() {
+ local idtuall_device=$1
+ local idtuall_tunnel=$2
if [ -z "$idtuall_device" ]; then
- echo $"Missing parameter 'device'"
- echo $"Usage: ifdown_ipv6_tunnel_all interfacename IPv4-tunneladdress"
+ echo $"Missing parameter 'device' (arg 1)"
return 1
fi
if [ -z "$idtuall_tunnel" ]; then
- echo $"Missing parameter 'IPv4-tunneladdress'"
- echo $"Usage: ifdown_ipv6_tunnel_all interfacename IPv4-tunneladdress"
+ echo $"Missing parameter 'IPv4-tunneladdress' (arg 2)"
return 1
fi
+
+ # Run IPv6 test
+ test_ipv6 || return 2
+
+
# Get all IPv6 routes through given interface and remove them
- LC_ALL=C route -n -A inet6 | grep "::$idtuall_tunnel" | while read ipv6net nexthop flags metric ref use iface args; do
+ LC_ALL=C route -A inet6 -n | grep "::$idtuall_tunnel" | while read ipv6net nexthop flags metric ref use iface args; do
if [ "::$idtuall_tunnel" = "$nexthop" ]; then
if echo $flags | grep -v -q "A"; then
# Only non addrconf (automatic installed) routes should be removed
@@ -401,6 +459,10 @@ function ifdown_ipv6_tunnel_all() {
fi
fi
done
+
+ # disable IPv6-over-IPv4 tunneling (if no longer a tunnel is up)
+ ifdown_ipv6_autotunnel
+ return 0
}
@@ -409,13 +471,13 @@ function ifdown_ipv6_tunnel_all() {
# $2: Address to test (without prefix)
# $3: Prefix of address $1
# return values: 1:problem, 10:not exists, 11:exits
-function test_ipv6_addrs_exists () {
- testdevice=$1
- testaddr=$2
- testprefix=$3
+test_ipv6_address_exists() {
+ local testdevice=$1
+ local testaddr=$2
+ local testprefix=$3
if [ -z "$testaddr" ]; then
- echo $"Missing parameter 'IPv6AddrToTest'"
+ echo $"Missing parameter 'IPv6AddrToTest' (arg 1)"
return 1
fi
@@ -423,16 +485,16 @@ function test_ipv6_addrs_exists () {
if [ "$EXISTS_ipv6calc" = "yes" ]; then
# Using ipv6calc and compare against /proc/net/if_inet6
- convertresult="`LC_ALL=C ipv6calc --addr2if_inet6 $testaddr/$testprefix`"
+ local convertresult="`LC_ALL=C ipv6calc --addr2if_inet6 $testaddr/$testprefix`"
# Split in address, scope and prefix length
- test_addr="`echo $convertresult | awk '{ print $1 }'`"
- test_scope="`echo $convertresult | awk '{ print $2 }'`"
- test_prefixlength="`echo $convertresult | awk '{ print $3 }'`"
+ local test_addr="`echo $convertresult | awk '{ print $1 }'`"
+ local test_scope="`echo $convertresult | awk '{ print $2 }'`"
+ local test_prefixlength="`echo $convertresult | awk '{ print $3 }'`"
if [ -z "$test_prefixlength" ]; then
- testresult="`grep "$test_addr .. .. $test_scope .." /proc/net/if_inet6 | grep $testdevice$`"
+ local testresult="`grep "$test_addr .. .. $test_scope .." /proc/net/if_inet6 | grep $testdevice$`"
else
- testresult="`grep "$test_addr .. $test_prefixlength $test_scope .." /proc/net/if_inet6 | grep $testdevice$`"
+ local testresult="`grep "$test_addr .. $test_prefixlength $test_scope .." /proc/net/if_inet6 | grep $testdevice$`"
fi
if [ ! -z "$testresult" ]; then
return 11
@@ -440,8 +502,8 @@ function test_ipv6_addrs_exists () {
return 10
fi
else
- # low budget version, only works if given address is in equal form like ifconfig displays
- testresult="`LC_ALL=C ifconfig $testdevice | grep "inet6 addr:" | grep -i ": $testaddr/$testprefix" | awk '{ print $3 }'`"
+ # low budget version, only works if given address is in equal form like "ip" displays
+ local testresult="`LC_ALL=C ip addr show dev $testdevice | grep inet6 | awk '{ print $2 }' | grep -i "^$testaddr/$testprefix$"`"
if [ ! -z "$testresult" ]; then
return 11
else
@@ -451,64 +513,56 @@ function test_ipv6_addrs_exists () {
}
##### Interface configuration
-function ifupdown_ipv6_usage() {
- echo $"Usage: $0 interfacename IPv6-address/IPv6-prefixlength"
-}
## Add an IPv6 address for given interface
# $1: Interface
# $2: IPv6 address
-function ifup_ipv6_real() {
- device=$1
- address=$2
+ifup_ipv6_real() {
+ local device=$1
+ local address=$2
if [ -z "$device" ]; then
- echo $"Missing parameter 'device'"
+ echo $"Missing parameter 'device' (arg 1)"
ifupdown_ipv6_usage
return 1
fi
- # Device "lo" need no IPv6 configuration
- if [ "$device" = "lo" ]; then
- return 0;
- fi
-
if [ -z "$address" ]; then
- echo $"Missing parameter 'IPv6-address'"
+ echo $"Missing parameter 'IPv6-address' (arg 2)"
ifupdown_ipv6_usage
return 1
fi
+ # Run IPv6 test
+ test_ipv6 || return 2
+
+ # Test, whether given IPv6 address is valid
+ if ! testipv6_valid $address; then
+ return 2
+ fi
+
# Test status of interface
- if LC_ALL=C ifconfig $device | grep -q "UP "; then
- # Interface is up
- true
+ if test_interface_status $device; then
+ # Interface is already up
+ true
else
# no IPv4 for this interface, interface is still down, do up ...
- ifconfig $device up
- fi
-
- # Extract address parts
- prefixlength_implicit="`echo $address | awk -F/ '{ print $2 }'`"
- address_implicit="`echo $address | awk -F/ '{ print $1 }'`"
+ ifconfig $device up
- # Test for prefix length
- if [ -z "$prefixlength_implicit" ]; then
- echo $"Missing 'prefix length' for given address"
- ifupdown_ipv6_usage
- return 1
- elif [ $prefixlength_implicit -lt 0 -o $prefixlength_implicit -gt 128 ]; then
- echo $"'prefix length' on given address is out of range (0-128)"
- ifupdown_ipv6_usage
- return 1
+ # Test, whether "up" has worked
+ if ! test_interface_status $device; then
+ echo $"Device '$device' enabling didn't work - FATAL ERROR!"
+ return 2
+ fi
fi
- # Run IPv6 test
- test_ipv6 || return
+ # Extract address parts
+ local prefixlength_implicit="`echo $address | awk -F/ '{ print $2 }'`"
+ local address_implicit="`echo $address | awk -F/ '{ print $1 }'`"
# Only add, if address do not already exist
- test_ipv6_addrs_exists $device $address_implicit $prefixlength_implicit
+ test_ipv6_address_exists $device $address_implicit $prefixlength_implicit
retval=$?
if [ $retval -lt 10 ]; then
return 2
@@ -520,94 +574,72 @@ function ifup_ipv6_real() {
ifconfig $device add $address || return 2
fi
+ return 0
}
## Remove all IPv6 routes and addresses for given interface
# cleanup to prevent kernel crashes
# $1: Interface
-function ifdown_ipv6_real_all() {
- idall_device=$1
+ifdown_ipv6_real_all() {
+ local device=$1
- if [ -z "$idall_device" ]; then
- echo $"Missing parameter 'device'"
- echo $"Usage: ifdown_ipv6_real_all interfacename"
+ if [ -z "$device" ]; then
+ echo $"Missing parameter 'device' (arg 1)"
return 1
fi
- # Get all IPv6 routes through given interface and remove them
- LC_ALL=C route -n -A inet6 | grep $idall_device | while read ipv6net nexthop flags metric ref use iface args; do
- if [ "$idall_device" = "$iface" ]; then
- if echo $flags | grep -v -q "A"; then
- # Only non addrconf (automatic installed) routes should be removed
- ifdown_ipv6_route $ipv6net $nexthop $iface
- fi
+ # Run IPv6 test
+ test_ipv6 || return 2
+
+
+ # Remove all IPv6 routes through this device (but not "lo")
+ if [ "$device" != "lo" ]; then
+ ip -6 route flush dev $device >/dev/null 2>&1
fi
- done
-
- # Get all IPv6 addresses assigned to given interface and remove them
- if [ "$EXISTS_ipv6calc" = "yes" ]; then
- grep $idall_device$ /proc/net/if_inet6 | while read hexaddr dummy1 hexprefixlenth hexscope device args; do
- if [ "$hexscope" != "20" ]; then
- ipv6addr="`ipv6calc --if_inet62addr $hexaddr $hexprefixlenth`"
- ifdown_ipv6_real $idall_device $ipv6addr
- fi
- done
- else
- LC_ALL=C ifconfig $idall_device | grep "inet6 addr:" | while read dummy1 dummy2 ipv6addr scope args; do
- if [ "$scope" != "Scope:Link" ]; then
- ifdown_ipv6_real $idall_device $ipv6addr
- fi
- done
- fi
+
+ # Remove all IPv6 addresses on this interface
+ ip -6 addr flush dev $device >/dev/null 2>&1
+
+ return 0
}
+
## Remove an IPv6 address on given interface
# $1: Interface
# $2: IPv6 address
-function ifdown_ipv6_real() {
- device=$1
- address=$2
+ifdown_ipv6_real() {
+ local device=$1
+ local address=$2
if [ -z "$device" ]; then
- echo $"Missing parameter 'device'"
+ echo $"Missing parameter 'device' (arg 1)"
ifupdown_ipv6_usage
return 1
fi
- # Device "lo" need no IPv6 configuration
- if [ "$device" = "lo" ]; then
- return 0;
- fi
-
if [ -z "$address" ]; then
- echo $"Missing parameter 'IPv6-address'"
+ echo $"Missing parameter 'IPv6-address' (arg 2)"
ifupdown_ipv6_usage
return 1
fi
- # Extract address parts
- prefixlength_implicit="`echo $address | awk -F/ '{ print $2 }'`"
- address_implicit="`echo $address | awk -F/ '{ print $1 }'`"
+ # Run IPv6 test
+ test_ipv6 || return 2
- # Test for prefix length
- if [ -z "$prefixlength_implicit" ]; then
- echo $"Missing 'prefix length' for given address"
- ifupdown_ipv6_usage
- return 1
- elif [ $prefixlength_implicit -lt 0 -o $prefixlength_implicit -gt 128 ]; then
- echo $"'prefix length' on given address is out of range (0-128)"
- ifupdown_ipv6_usage
- return 1
+ # Test, whether given IPv6 address is valid
+ if ! testipv6_valid $address; then
+ return 2
fi
- # Run IPv6 test
- test_ipv6 || return
+ # Extract address parts
+ local prefixlength_implicit="`echo $address | awk -F/ '{ print $2 }'`"
+ local address_implicit="`echo $address | awk -F/ '{ print $1 }'`"
# Only remove, if address exists and is not link-local (prevents from kernel crashing)
- test_ipv6_addrs_exists $device $address_implicit $prefixlength_implicit
- retval=$?
+ test_ipv6_address_exists $device $address_implicit $prefixlength_implicit
+ local retval=$?
if [ $retval -lt 10 ]; then
return 2
fi
@@ -618,5 +650,408 @@ function ifdown_ipv6_real() {
true
fi
+ return 0
}
+
+##### Some address test functions
+
+## Test a given IPv6 address for valid
+# $1: IPv6 address
+# Return code =0:valid 1:not valid 2:general problem
+testipv6_valid() {
+ local testipv6addr_valid=$1
+
+
+ if [ -z "$testipv6addr_valid" ]; then
+ # nothing for testing
+ return 2
+ fi
+
+ # Extract parts
+ local prefixlength_implicit="`echo $testipv6addr_valid | awk -F/ '{ print $2 }'`"
+ local address_implicit="`echo $testipv6addr_valid | awk -F/ '{ print $1 }'`"
+
+ if [ "$EXISTS_ipv6calc" = "yes" ]; then
+ if ! ipv6calc --addr2uncompaddr $testipv6addr_valid >/dev/null 2>&1; then
+ echo $"Given IPv6 address '$testipv6addr_valid' is not valid"
+ return 1
+ fi
+ else
+ # Test for a valid format
+ if ! echo "$address_implicit" | egrep -q '^[a-fA-F0-9:\.]*$'; then
+ echo $"Given IPv6 address '$testipv6addr_valid' is not valid"
+ return 1
+ fi
+ fi
+
+ # Test for prefix length
+ if [ -z "$prefixlength_implicit" ]; then
+ if echo "$testipv6addr_valid" | grep "/$"; then
+ # Trailing "/", but no value
+ echo $"Missing 'prefix length' for given address ''$testipv6addr_valid"
+ return 1
+ else
+ return 0
+ fi
+ elif [ $prefixlength_implicit -lt 0 -o $prefixlength_implicit -gt 128 ]; then
+ echo $"'prefix length' on given address '$testipv6addr_valid' is out of range (0-128)"
+ return 1
+ fi
+
+ return 0
+}
+
+
+
+
+## Test a given IPv4 address for not a private but unicast one
+# $1: IPv4 address
+# Return code =0:ok 1:private or not unicast 2:general problem
+testipv4_globalusable() {
+ local testipv4addr_globalusable=$1
+
+
+ if [ -z "$testipv4addr_globalusable" ]; then
+ # nothing for testing
+ return 2
+ fi
+
+
+ # Test for a globally usable IPv4 address now
+ # test 0.0.0.0/8
+ ipcalc --network $testipv4addr_globalusable 255.0.0.0 | grep -q "NETWORK=0\.0\.0\.0" && return 1
+ # test 10.0.0.0/8 (private)
+ ipcalc --network $testipv4addr_globalusable 255.0.0.0 | grep -q "NETWORK=10\.0\.0\.0" && return 1
+ # test 127.0.0.0/8 (loopback)
+ ipcalc --network $testipv4addr_globalusable 255.0.0.0 | grep -q "NETWORK=127\.0\.0\.0" && return 1
+ # test 169.254.0.0/16 (DHCP link local)
+ ipcalc --network $testipv4addr_globalusable 255.255.0.0 | grep -q "NETWORK=169\.254\.0\.0" && return 1
+ # test 172.16.0.0/12 (private)
+ ipcalc --network $testipv4addr_globalusable 255.240.0.0 | grep -q "NETWORK=172\.16\.0\.0" && return 1
+ # test 192.168.0.0/16 (private)
+ ipcalc --network $testipv4addr_globalusable 255.255.0.0 | grep -q "NETWORK=192\.168\.0\.0" && return 1
+ # test 224.0.0.0/3 (multicast and reserved, broadcast)
+ ipcalc --network $testipv4addr_globalusable 224.0.0.0 | grep -q "NETWORK=224\.0\.0\.0" && return 1
+
+ return 0
+}
+
+
+## Test a given device for status
+# $1: device name
+# Return code =0:UP 1:not UP 2:not exists
+test_interface_status() {
+ local device=$1
+
+ if [ -z "$device" ]; then
+ echo $"Missing parameter 'device'"
+ echo $"Usage: ifdown_ipv6to4_all interfacename"
+ return 1
+ fi
+
+ # Test if device exists
+ if ! LC_ALL=C ifconfig $device >/dev/null 2>&1 ; then
+ return 2
+ fi
+
+ # Test if device is up
+ if LC_ALL=C ifconfig $device 2>&1 | grep -q "UP "; then
+ return 0
+ else
+ return 1
+ fi
+}
+
+
+## Build 6to4 prefix
+# $1: IPv4 address
+# RetVal: 6to4address
+# Returncode 0=ok 1=failure 2=general problem
+create6to4prefix() {
+ local ipv4addr=$1
+
+
+ local major1="`echo $ipv4addr | awk -F. '{ print $1 }'`"
+ local minor1="`echo $ipv4addr | awk -F. '{ print $2 }'`"
+ local major2="`echo $ipv4addr | awk -F. '{ print $3 }'`"
+ local minor2="`echo $ipv4addr | awk -F. '{ print $4 }'`"
+
+ if [ -z "$major1" -o -z "$minor1" -o -z "$major2" -o -z "$minor2" ]; then
+ return 2
+ fi
+
+ if [ $major1 -eq 0 ]; then
+ local block1="`printf "%x" $minor1`"
+ else
+ local block1="`printf "%x%02x" $major1 $minor1`"
+ fi
+ if [ $major2 -eq 0 ]; then
+ local block2="`printf "%x" $minor2`"
+ else
+ local block2="`printf "%x%02x" $major2 $minor2`"
+ fi
+
+ local prefix6to4="2002:$block1:$block2"
+
+ echo "$prefix6to4"
+ return 0
+}
+
+
+##### 6to4 tunneling setup
+
+## Configure 6to4 tunneling up
+# $1: Interface (not needed - dummy)
+# $2: global IPv4 address of local interface
+# $3: IPv6 suffix for 6to4 prefix (optional, default is "1")
+# ReturnCodes 0=ok 1=failure 2=general problem
+ifup_ipv6to4() {
+ local device=$1 # dummy
+ local localipv4=$2
+ local localipv6to4suffix=$3
+
+ if [ -z "$device" ]; then
+ echo $"Missing parameter 'device' (arg 1)"
+ ifupdown_ipv6to4_usage
+ return 1
+ fi
+
+ if [ -z "$localipv4" ]; then
+ echo $"Missing parameter 'local IPv4 address' (arg 2)"
+ ifupdown_ipv6to4_usage
+ return 1
+ fi
+
+ # Run IPv6 test
+ test_ipv6 || return 2
+
+
+ # generate 6to4 address
+ local prefix6to4="`create6to4prefix $localipv4`"
+ if [ $? -ne 0 -o -z "$prefix6to4" ]; then
+ return 2
+ fi
+
+ if [ -z "$localipv6to4suffix" ]; then
+ local address6to4="${prefix6to4}::1/48"
+ else
+ local address6to4="${prefix6to4}::${localipv6to4suffix}/48"
+ fi
+
+ # enable general IPv6-over-IPv4 tunneling
+ ifup_ipv6_autotunnel
+
+ ifup_ipv6_real sit0 $address6to4
+ if [ $? -ne 0 ]; then
+ return 2
+ fi
+
+ return 0
+}
+
+
+## Configure all 6to4 tunneling down
+# $1: Interface (not needed - dummy)
+# ReturnCodes 0=ok 1=failure 2=general problem
+ifdown_ipv6to4_all() {
+ local device=$1 # dummy
+
+ if [ -z "$device" ]; then
+ echo $"Missing parameter 'device' (arg 1)"
+ return 1
+ fi
+
+ # Run IPv6 test
+ test_ipv6 || return 2
+
+
+ # Get all configured 6to4 addresses
+ LC_ALL=C ip addr show dev sit0 | grep inet6 | awk '{ print $2 }' | grep "^2002:" | while read ipv6to4addr; do
+ # And delete them
+ ifdown_ipv6_real sit0 $ipv6to4addr
+ done
+
+ # try to disable general IPv6-over-IPv4 tunneling
+ ifdown_ipv6_autotunnel
+
+}
+
+
+## Configure 6to4 tunneling down
+# $1: Interface (not needed - dummy)
+# $2: global IPv4 address of local interface
+# ReturnCodes 0=ok 1=failure 2=general problem
+ifdown_ipv6to4() {
+ local device=$1 # dummy
+ local localipv4=$2
+
+ if [ -z "$device" ]; then
+ echo $"Missing parameter 'device' (arg 1)"
+ return 1
+ fi
+
+ if [ -z "$localipv4" ]; then
+ echo $"Missing parameter 'local IPv4 address' (arg 2)"
+ return 1
+ fi
+
+ # Run IPv6 test
+ test_ipv6 || return 2
+
+
+ # generate 6to4 address
+ local prefix6to4="`create6to4prefix $localipv4`"
+ echo $"Generated 6to4 prefix '$prefix6to4' from '$localipv4'"
+ if [ $? -ne 0 -o -z "$prefix6to4" ]; then
+ return 2
+ fi
+
+ if [ -z "$localipv6to4suffix" ]; then
+ local address6to4="$prefix6to4::1/48"
+ else
+ local address6to4="${prefix6to4}::${localipv6to4suffix}/48"
+ fi
+
+ ifdown_ipv6_real sit0 $address6to4
+ if [ $? -ne 0 ]; then
+ return 2
+ fi
+
+ # try to disable general IPv6-over-IPv4 tunneling
+ ifdown_ipv6_autotunnel
+ if [ $? -ne 0 ]; then
+ return 2
+ fi
+
+ return 0
+}
+
+
+##### static tunnel device configuration
+
+## Configure a static tunnel device up
+# $1: Interface
+# $2: IPv4 address of foreign tunnel
+# $3: Local IPv6 address of a P-t-P tunnel (optional)
+ifup_ipv6_tunneldev() {
+ local device=$1
+ local addressipv4tunnel=$2
+ local addressipv6local=$3
+
+ if [ -z "$device" ]; then
+ echo $"Missing parameter 'device' (arg 1)"
+ return 1
+ fi
+
+ if [ -z "$addressipv4tunnel" ]; then
+ echo $"Missing parameter 'IPv4-tunneladdress' (arg 2)"
+ return 1
+ fi
+
+ # Run IPv6 test
+ test_ipv6 || return 2
+
+
+
+ if ! test_interface_status $device; then
+ # Get default TTL
+ local ttldefault="`sysctl net.ipv4.ip_default_ttl | awk '{ print $3 }'`"
+ if [ -z "$ttldefault" ]; then
+ local ttldefault=64
+ fi
+
+ # Test whether remote IPv4 address was already applied to another tunnel (does not catch IPv4 addresses with leading 0's)
+ LC_ALL=C ip tunnel show | grep $addressipv4tunnel | while read dev type tag remote tag local tag ttl rest; do
+ local devnew="`echo $dev | sed 's/:$//g'`"
+ if [ "$remote" = "$addressipv4tunnel" ]; then
+ echo $"Given remote address '$addressipv4tunnel' on tunnel device '$device' is already configured on device '$devnew' - FATAL ERROR!"
+ return 2
+ fi
+ done
+ if [ $? -ne 0 ]; then
+ return 2
+ fi
+
+ ip tunnel add $device mode sit ttl $ttldefault remote $addressipv4tunnel
+
+ # Test, whether "ip tunnel show" works without error
+ ip tunnel show $device >/dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ echo $"Tunnel device '$device' creation didn't work - ERROR!"
+ return 2
+ fi
+
+ # Test, whether "ip tunnel show" reports valid content
+ if ! ip tunnel show $device | grep -q "remote"; then
+ echo $"Tunnel device '$device' creation didn't work - ERROR!"
+ return 2
+ fi
+
+ ifconfig $device up
+
+ # Test, whether creation did worked
+ if ! test_interface_status $device; then
+ echo $"Tunnel device '$device' bringing up didn't work - ERROR!"
+ return 2
+ fi
+
+ # Set sysctls proper (regardless "default")
+ sysctl -w net.ipv6.conf.$device.forwarding=1 >/dev/null
+ sysctl -w net.ipv6.conf.$device.accept_ra=0 >/dev/null
+ sysctl -w net.ipv6.conf.$device.accept_redirects=0 >/dev/null
+
+ if [ ! -z "$addressipv6local" ]; then
+ # Setup P-t-P address
+ ifup_ipv6_real $device $addressipv6local
+ if [ $? -ne 0 ]; then
+ return 2
+ fi
+ fi
+ else
+ false
+ fi
+
+ return 0
+}
+
+
+## Configure a static tunnel device down
+# $1: Interface
+ifdown_ipv6_tunneldev() {
+ local device=$1
+
+ if [ -z "$device" ]; then
+ echo $"Missing parameter 'device' (arg 1)"
+ return 1
+ fi
+
+ # Run IPv6 test
+ test_ipv6 || return 2
+
+
+ if test_interface_status $device; then
+ # Shut down tunnel
+ ifdown_ipv6_real_all $device
+ else
+ if [ "$device" != "sit0" ]; then
+ false
+ fi
+ fi
+
+ if [ "$device" != "sit0" ]; then
+ if ip tunnel | grep -q "^$device:" ; then
+ ip tunnel del $device
+
+ # Test, whether removing did worked
+ if test_interface_status $device; then
+ false
+ fi
+ else
+ false
+ fi
+ fi
+
+ return 0
+}
+
77'>3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695
# translation of rpmdrake-ja.po to japanese
#
# Latest versions of po files are at http://www.mandrivalinux.com/l10n/ja.php3
#
# Japanese translation for rpmdrake.
# Copyright (C) 2000-2007 Free Software Foundation, Inc.
# YAMAGATA Hiroo <hiyori13@alum.mit.edu>, 2000.
# UTUMI Hirosi <utuhiro78@yahoo.co.jp>, 2003, 2004.
# BANDO Yukiko <ybando@k6.dion.ne.jp>, 2004-2008.
#
msgid ""
msgstr ""
"Project-Id-Version: rpmdrake-ja\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-04-28 09:06+0200\n"
"PO-Revision-Date: 2008-10-19 07:30+0900\n"
"Last-Translator: Yukiko Bando<ybando@k6.dion.ne.jp>\n"
"Language-Team: Japanese <cooker-i18n@mandrivalinux.org>\n"
"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.3.1\n"
"Plural-Forms: nplurals=1; plural=0;\n"

#: ../MageiaUpdate:102 ../Rpmdrake/gui.pm:990
#, c-format
msgid ""
"The list of updates is empty. This means that either there is\n"
"no available update for the packages installed on your computer,\n"
"or you already installed all of them."
msgstr ""
"更新リストが無効です。インストールされているパッケージの\n"
"更新版がないか、既にすべてインストールされています。"

#: ../MageiaUpdate:125 ../rpmdrake:97 ../rpmdrake:791 ../rpmdrake.pm:239
#, c-format
msgid "Software Management"
msgstr "ソフトウェアの管理"

#: ../MageiaUpdate:149
#, c-format
msgid "Here is the list of software package updates"
msgstr "RPM アップデートの一覧です"

#: ../MageiaUpdate:156
#, c-format
msgid "Name"
msgstr "名前"

#: ../MageiaUpdate:157 ../rpmdrake:289
#, c-format
msgid "Version"
msgstr "バージョン"

#: ../MageiaUpdate:158 ../rpmdrake:293
#, c-format
msgid "Release"
msgstr "リリース"

#: ../MageiaUpdate:159
#, c-format
msgid "Arch"
msgstr "アーキテクチャ"

#: ../MageiaUpdate:173 ../Rpmdrake/edit_urpm_sources.pm:1168
#, c-format
msgid "Help"
msgstr "ヘルプ"

#: ../MageiaUpdate:177 ../rpmdrake:713 ../rpmdrake.pm:852
#, c-format
msgid "Select all"
msgstr "すべて選択"

#: ../MageiaUpdate:190 ../rpmdrake.pm:856
#, c-format
msgid "Update"
msgstr "更新"

#: ../MageiaUpdate:198 ../rpmdrake:724 ../rpmdrake:787
#, c-format
msgid "Quit"
msgstr "終了"

#: ../Rpmdrake/edit_urpm_sources.pm:62
#, c-format
msgid "CD-ROM"
msgstr "CD-ROM"

#: ../Rpmdrake/edit_urpm_sources.pm:63
#, c-format
msgid "FTP"
msgstr "FTP"

#: ../Rpmdrake/edit_urpm_sources.pm:64 ../Rpmdrake/edit_urpm_sources.pm:74
#, c-format
msgid "Local"
msgstr "ローカル"

#: ../Rpmdrake/edit_urpm_sources.pm:65
#, c-format
msgid "HTTP"
msgstr "HTTP"

#: ../Rpmdrake/edit_urpm_sources.pm:66
#, c-format
msgid "HTTPS"
msgstr "HTTPS"

#: ../Rpmdrake/edit_urpm_sources.pm:67 ../Rpmdrake/edit_urpm_sources.pm:70
#, c-format
msgid "NFS"
msgstr "NFS"

#: ../Rpmdrake/edit_urpm_sources.pm:68
#, c-format
msgid "Removable"
msgstr "リムーバブルメディア"

#: ../Rpmdrake/edit_urpm_sources.pm:69
#, c-format
msgid "rsync"
msgstr "rsync"

#: ../Rpmdrake/edit_urpm_sources.pm:72
#, c-format
msgid "Mirror list"
msgstr "ミラーリスト"

#: ../Rpmdrake/edit_urpm_sources.pm:114
#, c-format
msgid "Choose media type"
msgstr "メディアの種類を選択"

#: ../Rpmdrake/edit_urpm_sources.pm:115
#, c-format
msgid ""
"In order to keep your system secure and stable, you must at a minimum set "
"up\n"
"sources for official security and stability updates. You can also choose to "
"set\n"
"up a fuller set of sources which includes the complete official Mageia\n"
"repositories, giving you access to more software than can fit on the Mageia\n"
"discs. Please choose whether to configure update sources only, or the full "
"set\n"
"of sources."
msgstr ""
"あなたのシステムの安全性と安定性を保つためには、少なくとも公式の\n"
"セキュリティアップデートと重要な修正を提供する更新ソースを設定し\n"
"なければなりません。また、Mageia の公式リポジトリ全体を含む完全\n"
"なソースを設定することもできます。こちらを選択すると、Mageia の\n"
"CD や DVD に入りきらないソフトウェアにもアクセスできるようになります。\n"
"どちらを設定するか選択してください。"

#: ../Rpmdrake/edit_urpm_sources.pm:122
#, c-format
msgid "Full set of sources"
msgstr "完全なソース"

#: ../Rpmdrake/edit_urpm_sources.pm:122
#, c-format
msgid "Update sources only"
msgstr "更新ソースのみ"

#: ../Rpmdrake/edit_urpm_sources.pm:135
#, c-format
msgid ""
"This will attempt to install all official sources corresponding to your\n"
"distribution (%s).\n"
"\n"
"I need to contact the Mageia website to get the mirror list.\n"
"Please check that your network is currently running.\n"
"\n"
"Is it ok to continue?"
msgstr ""
"お使いのディストリビューション (%s) に対応する公式ソースを\n"
"インストールします。\n"
"\n"
"Mageia のウェブサイトに接続してミラーサイトのリストを取得します。\n"
"ネットワークが有効になっていることを確認してください。\n"
"\n"
"続けますか?"

#: ../Rpmdrake/edit_urpm_sources.pm:145 ../Rpmdrake/edit_urpm_sources.pm:160
#, c-format
msgid "Please wait, adding media..."
msgstr "メディアを追加しています。お待ちください..."

#: ../Rpmdrake/edit_urpm_sources.pm:168
#, c-format
msgid "Add a medium"
msgstr "メディアを追加"

#: ../Rpmdrake/edit_urpm_sources.pm:172
#, c-format
msgid "Local files"
msgstr "ローカルファイル"

#: ../Rpmdrake/edit_urpm_sources.pm:172
#, c-format
msgid "Medium path:"
msgstr "メディアへのパス:"

#: ../Rpmdrake/edit_urpm_sources.pm:173
#, c-format
msgid "FTP server"
msgstr "FTP サーバ"

#: ../Rpmdrake/edit_urpm_sources.pm:173 ../Rpmdrake/edit_urpm_sources.pm:174
#: ../Rpmdrake/edit_urpm_sources.pm:175 ../Rpmdrake/edit_urpm_sources.pm:483
#, c-format
msgid "URL:"
msgstr "URL:"

#: ../Rpmdrake/edit_urpm_sources.pm:174
#, c-format
msgid "RSYNC server"
msgstr "RSYNC サーバ"

#: ../Rpmdrake/edit_urpm_sources.pm:175
#, c-format
msgid "HTTP server"
msgstr "HTTP サーバ"

#: ../Rpmdrake/edit_urpm_sources.pm:176
#, c-format
msgid "Removable device (CD-ROM, DVD, ...)"
msgstr "リムーバブルデバイス (CD-ROM, DVD など)"

#: ../Rpmdrake/edit_urpm_sources.pm:176
#, c-format
msgid "Path or mount point:"
msgstr "パスまたはマウントポイント:"

#: ../Rpmdrake/edit_urpm_sources.pm:194
#, c-format
msgid "Browse..."
msgstr "ブラウズ"

#: ../Rpmdrake/edit_urpm_sources.pm:221
#, c-format
msgid "Login:"
msgstr "ログイン:"

#: ../Rpmdrake/edit_urpm_sources.pm:221 ../Rpmdrake/edit_urpm_sources.pm:583
#: ../rpmdrake.pm:149
#, c-format
msgid "Password:"
msgstr "パスワード:"

#: ../Rpmdrake/edit_urpm_sources.pm:227
#, c-format
msgid "Medium name:"
msgstr "メディアの名前:"

#: ../Rpmdrake/edit_urpm_sources.pm:233
#, c-format
msgid "Create media for a whole distribution"
msgstr "ディストリビューションのすべてのメディアを追加"

#: ../Rpmdrake/edit_urpm_sources.pm:242
#, c-format
msgid "Tag this medium as an update medium"
msgstr "このメディアを更新メディアと見なす"

#: ../Rpmdrake/edit_urpm_sources.pm:252
#, c-format
msgid "You need to fill up at least the two first entries."
msgstr "少なくとも最初の二つの項目は入力してください。"

#: ../Rpmdrake/edit_urpm_sources.pm:256
#, c-format
msgid ""
"There is already a medium by that name, do you\n"
"really want to replace it?"
msgstr ""
"同じ名前のメディアが既にあります。\n"
"置き換えますか?"

#: ../Rpmdrake/edit_urpm_sources.pm:268
#, c-format
msgid "Adding a medium:"
msgstr "メディアを追加:"

#: ../Rpmdrake/edit_urpm_sources.pm:270
#, c-format
msgid "Type of medium:"
msgstr "メディアの種類:"

#: ../Rpmdrake/edit_urpm_sources.pm:280 ../Rpmdrake/edit_urpm_sources.pm:394
#: ../Rpmdrake/edit_urpm_sources.pm:492 ../Rpmdrake/edit_urpm_sources.pm:519
#: ../Rpmdrake/edit_urpm_sources.pm:600 ../Rpmdrake/edit_urpm_sources.pm:664
#: ../Rpmdrake/edit_urpm_sources.pm:766 ../Rpmdrake/gui.pm:717
#: ../Rpmdrake/init.pm:157 ../Rpmdrake/pkg.pm:188 ../Rpmdrake/pkg.pm:801
#: ../rpmdrake.pm:357 ../rpmdrake.pm:698 ../rpmdrake.pm:771 ../rpmdrake.pm:848
#, c-format
msgid "Cancel"
msgstr "キャンセル"

#: ../Rpmdrake/edit_urpm_sources.pm:282 ../Rpmdrake/edit_urpm_sources.pm:396
#: ../Rpmdrake/edit_urpm_sources.pm:519 ../Rpmdrake/edit_urpm_sources.pm:590
#: ../Rpmdrake/edit_urpm_sources.pm:663 ../Rpmdrake/edit_urpm_sources.pm:759
#: ../Rpmdrake/edit_urpm_sources.pm:832 ../Rpmdrake/edit_urpm_sources.pm:946
#: ../Rpmdrake/edit_urpm_sources.pm:1169 ../Rpmdrake/gui.pm:717
#: ../Rpmdrake/gui.pm:733 ../Rpmdrake/gui.pm:738 ../Rpmdrake/init.pm:157
#: ../Rpmdrake/pkg.pm:586 ../Rpmdrake/pkg.pm:801 ../Rpmdrake/rpmnew.pm:181
#: ../rpmdrake.pm:140 ../rpmdrake.pm:293 ../rpmdrake.pm:360 ../rpmdrake.pm:698
#, c-format
msgid "Ok"
msgstr "OK"

#: ../Rpmdrake/edit_urpm_sources.pm:337
#, c-format
msgid "Global options for package installation"
msgstr "パッケージをインストールする際の共通オプション"

#: ../Rpmdrake/edit_urpm_sources.pm:339
#, c-format
msgid "never"
msgstr "確認しない"

#: ../Rpmdrake/edit_urpm_sources.pm:339
#, c-format
msgid "always"
msgstr "常に確認する"

#: ../Rpmdrake/edit_urpm_sources.pm:344 ../Rpmdrake/edit_urpm_sources.pm:376
#, c-format
msgid "Never"
msgstr "しない"

#: ../Rpmdrake/edit_urpm_sources.pm:345 ../Rpmdrake/edit_urpm_sources.pm:379
#, c-format
msgid "On-demand"
msgstr "要求時に"

#: ../Rpmdrake/edit_urpm_sources.pm:346 ../Rpmdrake/edit_urpm_sources.pm:383
#, c-format
msgid "Update-only"
msgstr "更新のみ"

#: ../Rpmdrake/edit_urpm_sources.pm:347 ../Rpmdrake/edit_urpm_sources.pm:386
#, c-format
msgid "Always"
msgstr "常に"

#: ../Rpmdrake/edit_urpm_sources.pm:355
#, c-format
msgid "Verify RPMs to be installed:"
msgstr "インストールする RPM の署名を確認:"

#: ../Rpmdrake/edit_urpm_sources.pm:360
#, c-format
msgid "Download program to use:"
msgstr "ダウンロードに使用するプログラム:"

#: ../Rpmdrake/edit_urpm_sources.pm:367
#, c-format
msgid "XML meta-data download policy:"
msgstr "XML メタデータのダウンロードポリシー:"

#: ../Rpmdrake/edit_urpm_sources.pm:374
#, c-format
msgid ""
"For remote media, specify when XML meta-data (file lists, changelogs & "
"informations) are downloaded."
msgstr ""
"リモートメディアについて、ファイルのリストや変更ログなどの情報を提供する XML "
"メタデータをいつダウンロードするかを指定します。"

#: ../Rpmdrake/edit_urpm_sources.pm:377
#, c-format
msgid "For remote media, XML meta-data are never downloaded."
msgstr "XML メタデータをダウンロードしません。"

#: ../Rpmdrake/edit_urpm_sources.pm:380
#, c-format
msgid "(This is the default)"
msgstr "(これがデフォルトです)"

#: ../Rpmdrake/edit_urpm_sources.pm:381
#, c-format
msgid "The specific XML info file is downloaded when clicking on package."
msgstr ""
"パッケージをクリックしたときに、そのパッケージの XML 情報ファイルをダウンロー"
"ドします。"

#: ../Rpmdrake/edit_urpm_sources.pm:384
#, c-format
msgid ""
"Updating media implies updating XML info files already required at least "
"once."
msgstr ""
"メディアを更新したときに、少なくとも一度要求された XML 情報ファイルを更新しま"
"す。"

#: ../Rpmdrake/edit_urpm_sources.pm:387
#, c-format
msgid "All XML info files are downloaded when adding or updating media."
msgstr ""
"メディアを追加/更新したときに、すべての XML 情報ファイルをダウンロードしま"
"す。"

#: ../Rpmdrake/edit_urpm_sources.pm:416
#, c-format
msgid "Source Removal"
msgstr "ソースを削除"

#: ../Rpmdrake/edit_urpm_sources.pm:418
#, c-format
msgid "Are you sure you want to remove source \"%s\"?"
msgstr "ソース %s を削除しますか?"

#: ../Rpmdrake/edit_urpm_sources.pm:419
#, c-format
msgid "Are you sure you want to remove the following sources?"
msgstr "本当に以下のソースを削除しますか?"

#: ../Rpmdrake/edit_urpm_sources.pm:425
#, c-format
msgid "Please wait, removing medium..."
msgstr "メディアを削除しています。お待ちください..."

#: ../Rpmdrake/edit_urpm_sources.pm:473
#, c-format
msgid "Edit a medium"
msgstr "メディアを編集"

#: ../Rpmdrake/edit_urpm_sources.pm:480
#, c-format
msgid "Editing medium \"%s\":"
msgstr "メディア %s を編集:"

#: ../Rpmdrake/edit_urpm_sources.pm:484
#, c-format
msgid "Downloader:"
msgstr "ダウンローダー:"

#: ../Rpmdrake/edit_urpm_sources.pm:496
#, c-format
msgid "Save changes"
msgstr "変更を保存"

#: ../Rpmdrake/edit_urpm_sources.pm:505
#, c-format
msgid "Proxy..."
msgstr "プロキシ"

#: ../Rpmdrake/edit_urpm_sources.pm:517
#, c-format
msgid "You need to insert the medium to continue"
msgstr "続けるにはメディアを挿入してください"

#: ../Rpmdrake/edit_urpm_sources.pm:518
#, c-format
msgid ""
"In order to save the changes, you need to insert the medium in the drive."
msgstr "変更を保存するにはメディアをドライブに挿入してください。"

#: ../Rpmdrake/edit_urpm_sources.pm:553
#, c-format
msgid "Configure proxies"
msgstr "プロキシの設定"

#: ../Rpmdrake/edit_urpm_sources.pm:566
#, c-format
msgid "Proxy settings for media \"%s\""
msgstr "メディア %s のプロキシ設定"

#: ../Rpmdrake/edit_urpm_sources.pm:567
#, c-format
msgid "Global proxy settings"
msgstr "全体のプロキシ設定"

#: ../Rpmdrake/edit_urpm_sources.pm:569
#, c-format
msgid ""
"If you need a proxy, enter the hostname and an optional port (syntax: "
"<proxyhost[:port]>):"
msgstr ""
"プロキシが必要な場合は、ホスト名とポート番号 (オプション) を次の書式で入力し"
"てください: <プロキシホスト[:ポート]>"

#: ../Rpmdrake/edit_urpm_sources.pm:572
#, c-format
msgid "Proxy hostname:"
msgstr "プロキシのホスト名:"

#: ../Rpmdrake/edit_urpm_sources.pm:575
#, c-format
msgid "You may specify a user/password for the proxy authentication:"
msgstr "プロキシ認証用にユーザ名/パスワードを指定できます:"

#: ../Rpmdrake/edit_urpm_sources.pm:578
#, c-format
msgid "User:"
msgstr "ユーザ名:"

#: ../Rpmdrake/edit_urpm_sources.pm:674
#, c-format
msgid "Add a parallel group"
msgstr "パラレルグループを追加"

#: ../Rpmdrake/edit_urpm_sources.pm:674
#, c-format
msgid "Edit a parallel group"
msgstr "パラレルグループを編集"

#: ../Rpmdrake/edit_urpm_sources.pm:698
#, c-format
msgid "Add a medium limit"
msgstr "メディアの制限を追加"

#: ../Rpmdrake/edit_urpm_sources.pm:698
#, c-format
msgid "Choose a medium for adding in the media limit:"
msgstr "メディアの制限に追加するメディアを選んでください:"

#: ../Rpmdrake/edit_urpm_sources.pm:715
#, c-format
msgid "Add a host"
msgstr "ホストを追加"

#: ../Rpmdrake/edit_urpm_sources.pm:715
#, c-format
msgid "Type in the hostname or IP address of the host to add:"
msgstr "追加するホストのホスト名または IP アドレスを入力してください:"

#: ../Rpmdrake/edit_urpm_sources.pm:729
#, c-format
msgid "Editing parallel group \"%s\":"
msgstr "パラレルグループ %s を編集:"

#: ../Rpmdrake/edit_urpm_sources.pm:733
#, c-format
msgid "Group name:"
msgstr "グループ名:"

#: ../Rpmdrake/edit_urpm_sources.pm:734
#, c-format
msgid "Protocol:"
msgstr "プロトコル:"

#: ../Rpmdrake/edit_urpm_sources.pm:736
#, c-format
msgid "Media limit:"
msgstr "メディアの制限:"

#: ../Rpmdrake/edit_urpm_sources.pm:741 ../Rpmdrake/edit_urpm_sources.pm:750
#: ../Rpmdrake/edit_urpm_sources.pm:934 ../Rpmdrake/edit_urpm_sources.pm:1149
#, c-format
msgid "Add"
msgstr "追加"

#: ../Rpmdrake/edit_urpm_sources.pm:742 ../Rpmdrake/edit_urpm_sources.pm:751
#: ../Rpmdrake/edit_urpm_sources.pm:812 ../Rpmdrake/edit_urpm_sources.pm:938
#: ../Rpmdrake/edit_urpm_sources.pm:1139
#, c-format
msgid "Remove"
msgstr "削除"

#: ../Rpmdrake/edit_urpm_sources.pm:745
#, c-format
msgid "Hosts:"
msgstr "ホスト:"

#: ../Rpmdrake/edit_urpm_sources.pm:781
#, c-format
msgid "Configure parallel urpmi (distributed execution of urpmi)"
msgstr "パラレル urpmi を設定 (distributed execution of urpmi)"

#: ../Rpmdrake/edit_urpm_sources.pm:785
#, c-format
msgid "Group"
msgstr "グループ"

#: ../Rpmdrake/edit_urpm_sources.pm:785
#, c-format
msgid "Protocol"
msgstr "プロトコル"

#: ../Rpmdrake/edit_urpm_sources.pm:785
#, c-format
msgid "Media limit"
msgstr "メディアの制限"

#: ../Rpmdrake/edit_urpm_sources.pm:786
#, c-format
msgid "Command"
msgstr "コマンド"

#: ../Rpmdrake/edit_urpm_sources.pm:796 ../Rpmdrake/formatting.pm:129
#: ../Rpmdrake/gui.pm:987 ../Rpmdrake/pkg.pm:99 ../Rpmdrake/pkg.pm:147
#: ../Rpmdrake/pkg.pm:158 ../Rpmdrake/pkg.pm:179 ../Rpmdrake/rpmnew.pm:81
#, c-format
msgid "(none)"
msgstr "(なし)"

#: ../Rpmdrake/edit_urpm_sources.pm:816
#, c-format
msgid "Edit..."
msgstr "編集"

#: ../Rpmdrake/edit_urpm_sources.pm:824
#, c-format
msgid "Add..."
msgstr "追加"

#: ../Rpmdrake/edit_urpm_sources.pm:840
#, c-format
msgid "Manage keys for digital signatures of packages"
msgstr "パッケージのデジタル署名用のキーを管理"

#: ../Rpmdrake/edit_urpm_sources.pm:846 ../Rpmdrake/edit_urpm_sources.pm:1055
#, c-format
msgid "Medium"
msgstr "メディア"

#: ../Rpmdrake/edit_urpm_sources.pm:853
#, c-format
msgid ""
"_:cryptographic keys\n"
"Keys"
msgstr "暗号キー"

#: ../Rpmdrake/edit_urpm_sources.pm:876
#, c-format
msgid "no name found, key doesn't exist in rpm keyring!"
msgstr "名前が見つかりません。キーが rpm keyring にありません。"

#: ../Rpmdrake/edit_urpm_sources.pm:896
#, c-format
msgid "Add a key"
msgstr "キーを追加"

#: ../Rpmdrake/edit_urpm_sources.pm:896
#, c-format
msgid "Choose a key for adding to the medium %s"
msgstr "メディア %s に追加するキーを選んでください"

#: ../Rpmdrake/edit_urpm_sources.pm:915
#, c-format
msgid "Remove a key"
msgstr "キーを削除"

#: ../Rpmdrake/edit_urpm_sources.pm:916
#, c-format
msgid ""
"Are you sure you want to remove the key %s from medium %s?\n"
"(name of the key: %s)"
msgstr ""
"キー %s を メディア %s から削除しますか?\n"
"(キーの名前: %s)"

#: ../Rpmdrake/edit_urpm_sources.pm:955 ../Rpmdrake/edit_urpm_sources.pm:1132
#, c-format
msgid "Configure media"
msgstr "メディアを設定"

#: ../Rpmdrake/edit_urpm_sources.pm:962 ../Rpmdrake/edit_urpm_sources.pm:963
#: ../Rpmdrake/edit_urpm_sources.pm:964 ../Rpmdrake/edit_urpm_sources.pm:965
#: ../Rpmdrake/edit_urpm_sources.pm:966 ../rpmdrake:542 ../rpmdrake:545
#: ../rpmdrake:550 ../rpmdrake:565 ../rpmdrake:566
#, c-format
msgid "/_File"
msgstr "/ファイル(_F)"

#: ../Rpmdrake/edit_urpm_sources.pm:963
#, c-format
msgid "/_Update"
msgstr "/更新(_U)"

#: ../Rpmdrake/edit_urpm_sources.pm:963
#, c-format
msgid "<control>U"
msgstr "<control>U"

#: ../Rpmdrake/edit_urpm_sources.pm:964
#, c-format
msgid "/Add a specific _media mirror"
msgstr "/ミラーリストからメディアを追加(_M)"

#: ../Rpmdrake/edit_urpm_sources.pm:964
#, c-format
msgid "<control>M"
msgstr "<control>M"

#: ../Rpmdrake/edit_urpm_sources.pm:965
#, c-format
msgid "/_Add a custom medium"
msgstr "/カスタムメディアを追加(_A)"

#: ../Rpmdrake/edit_urpm_sources.pm:965
#, c-format
msgid "<control>A"
msgstr "<control>A"

#: ../Rpmdrake/edit_urpm_sources.pm:966
#, c-format
msgid "/Close"
msgstr "/閉じる"

#: ../Rpmdrake/edit_urpm_sources.pm:966
#, c-format
msgid "<control>W"
msgstr "<control>W"

#: ../Rpmdrake/edit_urpm_sources.pm:967 ../Rpmdrake/edit_urpm_sources.pm:968
#: ../Rpmdrake/edit_urpm_sources.pm:969 ../Rpmdrake/edit_urpm_sources.pm:970
#: ../Rpmdrake/edit_urpm_sources.pm:971 ../rpmdrake:533 ../rpmdrake:535
#: ../rpmdrake:537 ../rpmdrake:538 ../rpmdrake:539 ../rpmdrake:569
#: ../rpmdrake:585 ../rpmdrake:589 ../rpmdrake:665
#, c-format
msgid "/_Options"
msgstr "/オプション(_O)"

#: ../Rpmdrake/edit_urpm_sources.pm:968
#, c-format
msgid "/_Global options"
msgstr "/共通オプション(_G)"

#: ../Rpmdrake/edit_urpm_sources.pm:968
#, c-format
msgid "<control>G"
msgstr "<control>G"

#: ../Rpmdrake/edit_urpm_sources.pm:969
#, c-format
msgid "/Manage _keys"
msgstr "/キーを管理(_K)"

#: ../Rpmdrake/edit_urpm_sources.pm:969
#, c-format
msgid "<control>K"
msgstr "<control>K"

#: ../Rpmdrake/edit_urpm_sources.pm:970
#, c-format
msgid "/_Parallel"
msgstr "/パラレル(_P)"

#: ../Rpmdrake/edit_urpm_sources.pm:970
#, c-format
msgid "<control>P"
msgstr "<control>P"

#: ../Rpmdrake/edit_urpm_sources.pm:971
#, c-format
msgid "/P_roxy"
msgstr "/プロキシ(_R)"

#: ../Rpmdrake/edit_urpm_sources.pm:971
#, c-format
msgid "<control>R"
msgstr "<control>R"

#: ../Rpmdrake/edit_urpm_sources.pm:973 ../Rpmdrake/edit_urpm_sources.pm:974
#: ../Rpmdrake/edit_urpm_sources.pm:975 ../Rpmdrake/edit_urpm_sources.pm:976
#: ../rpmdrake:613 ../rpmdrake:614 ../rpmdrake:615 ../rpmdrake:616
#, c-format
msgid "/_Help"
msgstr "/ヘルプ(_H)"

#: ../Rpmdrake/edit_urpm_sources.pm:974 ../rpmdrake:614
#, c-format
msgid "/_Report Bug"
msgstr "/バグを報告(_R)"

#: ../Rpmdrake/edit_urpm_sources.pm:976 ../rpmdrake:616
#, c-format
msgid "/_About..."
msgstr "/情報(_A)..."

#: ../Rpmdrake/edit_urpm_sources.pm:979 ../rpmdrake:619
#, c-format
msgid "Rpmdrake"
msgstr "Rpmdrake"

#: ../Rpmdrake/edit_urpm_sources.pm:981 ../rpmdrake:621
#, c-format
msgid "Copyright (C) %s by Mandriva"
msgstr "Copyright (C) %s by Mandriva"

#: ../Rpmdrake/edit_urpm_sources.pm:983 ../rpmdrake:623
#, c-format
msgid "Rpmdrake is Mageia package management tool."
msgstr "Rpmdrake は Mageia のパッケージ管理ツールです。"

#: ../Rpmdrake/edit_urpm_sources.pm:985 ../rpmdrake:625
#, c-format
msgid "Mageia"
msgstr "Mageia"

#. -PO: put here name(s) and email(s) of translator(s) (eg: "John Smith <jsmith@nowhere.com>")
#. -PO: put here name(s) and email(s) of translator(s) (eg: "John Smith <jsmith@nowhere.com>")
#: ../Rpmdrake/edit_urpm_sources.pm:990 ../rpmdrake:630
#, c-format
msgid "_: Translator(s) name(s) & email(s)\n"
msgstr ""
"Yukiko BANDO <ybando@k6.dion.ne.jp>\n"
"Hirosi UTUMI <utuhiro78@yahoo.co.jp>\n"

#: ../Rpmdrake/edit_urpm_sources.pm:1045 ../Rpmdrake/pkg.pm:253
#, c-format
msgid "Enabled"
msgstr "有効"

#: ../Rpmdrake/edit_urpm_sources.pm:1048
#, c-format
msgid "Updates"
msgstr "更新"

#: ../Rpmdrake/edit_urpm_sources.pm:1052
#, c-format
msgid "Type"
msgstr "タイプ"

#: ../Rpmdrake/edit_urpm_sources.pm:1079
#, c-format
msgid "This medium needs to be updated to be usable. Update it now ?"
msgstr "このメディアを使うためには更新する必要があります。今更新しますか?"

#: ../Rpmdrake/edit_urpm_sources.pm:1105
#, c-format
msgid ""
"Unable to update medium, errors reported:\n"
"\n"
"%s"
msgstr ""
"メディアを更新できません。エラー:\n"
"\n"
"%s"

#: ../Rpmdrake/edit_urpm_sources.pm:1143
#, c-format
msgid "Edit"
msgstr "編集"

#: ../Rpmdrake/edit_urpm_sources.pm:1191
#, c-format
msgid ""
"Packages database is locked. Please close other applications\n"
"working with packages database (do you have another media\n"
"manager on another desktop, or are you currently installing\n"
"packages as well?)."
msgstr ""
"パッケージのデータベースがロックされています。パッケージの\n"
"データベースを使用しているアプリケーションを閉じてください。\n"
"(別のデスクトップでメディアマネージャを実行中、あるいはパッケージ\n"
"を現在インストール中ではありませんか?)"

#: ../Rpmdrake/formatting.pm:102
#, c-format
msgid "None (installed)"
msgstr "なし (インストール済み)"

#: ../Rpmdrake/formatting.pm:103
#, c-format
msgid "Unknown"
msgstr "不明"

#: ../Rpmdrake/formatting.pm:166
#, c-format
msgid "%s of additional disk space will be used."
msgstr "ディスク容量を %s 使います。"

#: ../Rpmdrake/formatting.pm:167
#, c-format
msgid "%s of disk space will be freed."
msgstr "ディスク容量が %s 空きます。"

#: ../Rpmdrake/gui.pm:78
#, c-format
msgid "Search results"
msgstr "検索結果"

#: ../Rpmdrake/gui.pm:78
#, c-format
msgid "Search results (none)"
msgstr "検索結果 (なし)"

#: ../Rpmdrake/gui.pm:124 ../Rpmdrake/gui.pm:323 ../Rpmdrake/gui.pm:325
#: ../Rpmdrake/pkg.pm:171
#, c-format
msgid "(Not available)"
msgstr "(なし)"

#: ../Rpmdrake/gui.pm:136
#, c-format
msgid "Security advisory"
msgstr "セキュリティ報告"

#: ../Rpmdrake/gui.pm:148 ../Rpmdrake/gui.pm:351
#, c-format
msgid "No description"
msgstr "説明なし"

#: ../Rpmdrake/gui.pm:161
#, c-format
msgid "It is <b>not supported</b> by Mageia."
msgstr ""

#: ../Rpmdrake/gui.pm:162
#, c-format
msgid "It may <b>break</b> your system."
msgstr ""

#: ../Rpmdrake/gui.pm:164
#, fuzzy, c-format
msgid "This package is not free software"
msgstr "以下の %d 個のパッケージをインストールします:"

#: ../Rpmdrake/gui.pm:167
#, c-format
msgid "This package contains a new version that was backported."
msgstr ""

#: ../Rpmdrake/gui.pm:171
#, c-format
msgid "This package is a potential candidate for an update."
msgstr ""

#: ../Rpmdrake/gui.pm:176
#, c-format
msgid "This is an official update which is supported by Mageia."
msgstr ""

#: ../Rpmdrake/gui.pm:177
#, c-format
msgid "This is an unofficial update."
msgstr ""

#: ../Rpmdrake/gui.pm:181
#, c-format
msgid "This is an official package supported by Mageia"
msgstr ""

#: ../Rpmdrake/gui.pm:198
#, fuzzy, c-format
msgid "Notice: "
msgstr "重要性: "

#: ../Rpmdrake/gui.pm:200 ../Rpmdrake/gui.pm:341
#, c-format
msgid "Importance: "
msgstr "重要性: "

#: ../Rpmdrake/gui.pm:201 ../Rpmdrake/gui.pm:349
#, c-format
msgid "Reason for update: "
msgstr "更新の理由: "

#: ../Rpmdrake/gui.pm:212 ../Rpmdrake/gui.pm:336
#, c-format
msgid "Version: "
msgstr "バージョン: "

#: ../Rpmdrake/gui.pm:214 ../Rpmdrake/gui.pm:331
#, c-format
msgid "Currently installed version: "
msgstr "インストール済みのバージョン: "

#: ../Rpmdrake/gui.pm:216
#, c-format
msgid "Group: "
msgstr "グループ: "

#: ../Rpmdrake/gui.pm:217 ../Rpmdrake/gui.pm:337
#, c-format
msgid "Architecture: "
msgstr "アーキテクチャ: "

#: ../Rpmdrake/gui.pm:218 ../Rpmdrake/gui.pm:338
#, c-format
msgid "Size: "
msgstr "サイズ: "

#: ../Rpmdrake/gui.pm:218 ../Rpmdrake/gui.pm:338
#, c-format
msgid "%s KB"
msgstr "%s KB"

#: ../Rpmdrake/gui.pm:219 ../Rpmdrake/gui.pm:330 ../rpmdrake.pm:903
#, c-format
msgid "Medium: "
msgstr "メディア: "

#: ../Rpmdrake/gui.pm:232
#, c-format
msgid "New dependencies:"
msgstr ""

#: ../Rpmdrake/gui.pm:243
#, c-format
msgid "No non installed dependency."
msgstr ""

#: ../Rpmdrake/gui.pm:266
#, c-format
msgid "URL: "
msgstr "URL: "

#: ../Rpmdrake/gui.pm:299
#, c-format
msgid "Details:"
msgstr "詳細:"

#: ../Rpmdrake/gui.pm:303
#, c-format
msgid "Files:"
msgstr "ファイル: "

#: ../Rpmdrake/gui.pm:305
#, c-format
msgid "Changelog:"
msgstr "変更ログ: "

#: ../Rpmdrake/gui.pm:320
#, c-format
msgid "Files:\n"
msgstr "ファイル: \n"

#: ../Rpmdrake/gui.pm:325
#, c-format
msgid "Changelog:\n"
msgstr "変更ログ: \n"

#: ../Rpmdrake/gui.pm:335
#, c-format
msgid "Name: "
msgstr "名前: "

#: ../Rpmdrake/gui.pm:345
#, c-format
msgid "Summary: "
msgstr "概要: "

#: ../Rpmdrake/gui.pm:351
#, c-format
msgid "Description: "
msgstr "説明: "

#: ../Rpmdrake/gui.pm:366 ../Rpmdrake/gui.pm:560 ../Rpmdrake/gui.pm:566
#: ../Rpmdrake/gui.pm:572 ../Rpmdrake/pkg.pm:811 ../Rpmdrake/pkg.pm:821
#: ../Rpmdrake/pkg.pm:835 ../rpmdrake:787 ../rpmdrake.pm:828
#: ../rpmdrake.pm:942
#, c-format
msgid "Warning"
msgstr "警告"

#: ../Rpmdrake/gui.pm:368
#, c-format
msgid "The package \"%s\" was found."
msgstr "パッケージ \"%s\" が見つかりました。"

#: ../Rpmdrake/gui.pm:369
#, c-format
msgid "However this package is not in the package list."
msgstr "しかしながら、このパッケージはパッケージリストにありません。"

#: ../Rpmdrake/gui.pm:370
#, c-format
msgid "You may want to update your urpmi database."
msgstr "urpmi データベースを更新した方がよいでしょう。"

#: ../Rpmdrake/gui.pm:372
#, c-format
msgid "Matching packages:"
msgstr "マッチするパッケージ:"

#. -PO: this is list fomatting: "- <package_name> (medium: <medium_name>)"
#. -PO: eg: "- rpmdrake (medium: "Main Release"
#: ../Rpmdrake/gui.pm:377
#, c-format
msgid "- %s (medium: %s)"
msgstr "- %s (メディア: %s)"

#: ../Rpmdrake/gui.pm:561
#, c-format
msgid "Removing package %s would break your system"
msgstr "パッケージ %s を削除するとシステムが壊れます"

#: ../Rpmdrake/gui.pm:566
#, c-format
msgid ""
"The \"%s\" package is in urpmi skip list.\n"
"Do you want to select it anyway?"
msgstr ""
"パッケージ \"%s\" は urpmi のスキップリストにあります。\n"
"それでも選択しますか?"

#: ../Rpmdrake/gui.pm:572 ../Rpmdrake/pkg.pm:685
#, c-format
msgid ""
"Rpmdrake or one of its priority dependencies needs to be updated first. "
"Rpmdrake will then restart."
msgstr ""
"rpmdrake またはそれが依存するパッケージの一つを先に更新する必要があります。"
"rpmdrake は更新後に再スタートします。"

#: ../Rpmdrake/gui.pm:699 ../Rpmdrake/gui.pm:729 ../Rpmdrake/gui.pm:731
#, c-format
msgid "More information on package..."
msgstr "パッケージの詳細情報..."

#: ../Rpmdrake/gui.pm:701
#, c-format
msgid "Please choose"
msgstr "選んでください"

#: ../Rpmdrake/gui.pm:702
#, c-format
msgid "The following package is needed:"
msgstr "以下のパッケージのいずれかが必要です:"

#: ../Rpmdrake/gui.pm:702
#, c-format
msgid "One of the following packages is needed:"
msgstr "以下のパッケージのいずれかが必要です:"

#. -PO: Keep it short, this is gonna be on a button
#: ../Rpmdrake/gui.pm:717 ../Rpmdrake/gui.pm:722
#, c-format
msgid "More info"
msgstr "詳細情報"

#: ../Rpmdrake/gui.pm:724
#, c-format
msgid "Information on packages"
msgstr "パッケージの情報"

#: ../Rpmdrake/gui.pm:752
#, c-format
msgid "Checking dependencies of package..."
msgstr "パッケージの依存関係をチェックしています..."

#: ../Rpmdrake/gui.pm:757
#, c-format
msgid "Some additional packages need to be removed"
msgstr "いくつかのパッケージを削除します"

#: ../Rpmdrake/gui.pm:768
#, c-format
msgid ""
"Because of their dependencies, the following package(s) also need to be "
"removed:"
msgstr "依存関係を満たすために 以下のパッケージを削除します:"

#: ../Rpmdrake/gui.pm:773
#, c-format
msgid "Some packages can't be removed"
msgstr "削除できないパッケージがあります"

#: ../Rpmdrake/gui.pm:774
#, c-format
msgid ""
"Removing these packages would break your system, sorry:\n"
"\n"
msgstr ""
"このパッケージを削除するとシステムが壊れます:\n"
"\n"

#: ../Rpmdrake/gui.pm:783 ../Rpmdrake/gui.pm:860
#, c-format
msgid ""
"Because of their dependencies, the following package(s) must be unselected "
"now:\n"
"\n"
msgstr ""
"依存関係を満たすために\n"
"以下のパッケージの選択を解除します:\n"
"\n"

#: ../Rpmdrake/gui.pm:812
#, c-format
msgid "Additional packages needed"
msgstr "追加パッケージが必要です"

#: ../Rpmdrake/gui.pm:813
#, c-format
msgid ""
"To satisfy dependencies, the following package(s) also need to be "
"installed:\n"
"\n"
msgstr ""
"依存関係を満たすために\n"
"以下のパッケージを追加します:\n"
"\n"

#: ../Rpmdrake/gui.pm:821
#, c-format
msgid "Conflicting Packages"
msgstr "衝突するパッケージ"

#: ../Rpmdrake/gui.pm:835
#, c-format
msgid "%s (belongs to the skip list)"
msgstr "%s (スキップリストに含まれています)"

#: ../Rpmdrake/gui.pm:839
#, c-format
msgid "One package cannot be installed"
msgstr "インストールできないパッケージがあります"

#: ../Rpmdrake/gui.pm:839
#, c-format
msgid "Some packages can't be installed"
msgstr "インストールできないパッケージがあります"

#: ../Rpmdrake/gui.pm:841
#, c-format
msgid ""
"Sorry, the following package cannot be selected:\n"
"\n"
"%s"
msgstr ""
"以下のパッケージは選択できません:\n"
"\n"
"%s"

#: ../Rpmdrake/gui.pm:842
#, c-format
msgid ""
"Sorry, the following packages can't be selected:\n"
"\n"
"%s"
msgstr ""
"以下のパッケージは選択できません:\n"
"\n"
"%s"

#: ../Rpmdrake/gui.pm:859 ../Rpmdrake/pkg.pm:689
#, c-format
msgid "Some packages need to be removed"
msgstr "いくつかのパッケージを削除する必要があります"

#: ../Rpmdrake/gui.pm:894
#, fuzzy, c-format
msgid "Some packages are selected."
msgstr "選択されたパッケージが多すぎます"

#: ../Rpmdrake/gui.pm:894
#, c-format
msgid "Do you really want to quit?"
msgstr ""

#: ../Rpmdrake/gui.pm:903
#, c-format
msgid "Error: %s appears to be mounted read-only."
msgstr "エラー: %s は読み取り専用でマウントされているようです。"

#: ../Rpmdrake/gui.pm:907
#, c-format
msgid "You need to select some packages first."
msgstr "まずパッケージを選んでください。"

#: ../Rpmdrake/gui.pm:912
#, c-format
msgid "Too many packages are selected"
msgstr "選択されたパッケージが多すぎます"

#: ../Rpmdrake/gui.pm:913
#, c-format
msgid ""
"Warning: it seems that you are attempting to add so much\n"
"packages that your filesystem may run out of free diskspace,\n"
"during or after package installation ; this is particularly\n"
"dangerous and should be considered with care.\n"
"\n"
"Do you really want to install all the selected packages?"
msgstr ""
"警告: 追加するパッケージが多すぎて、インストール中に\n"
"または後でディスクの容量が足りなくなるかもしれません。\n"
"これは非常に危険なので、慎重に考えてください。\n"
"\n"
"選択したパッケージをすべてインストールしますか?"

#: ../Rpmdrake/gui.pm:940 ../Rpmdrake/open_db.pm:102
#, c-format
msgid "Fatal error"
msgstr "致命的なエラー"

#: ../Rpmdrake/gui.pm:941 ../Rpmdrake/open_db.pm:103 ../Rpmdrake/pkg.pm:451
#, c-format
msgid "A fatal error occurred: %s."
msgstr "致命的なエラーが発生: %s."

#: ../Rpmdrake/gui.pm:976
#, c-format
msgid "Please wait, listing packages..."
msgstr "パッケージのリストを作成しています。お待ちください..."

#: ../Rpmdrake/gui.pm:989
#, c-format
msgid "No update"
msgstr "更新なし"

#: ../Rpmdrake/gui.pm:1016 ../Rpmdrake/icon.pm:35 ../rpmdrake:212
#: ../rpmdrake:368 ../rpmdrake:395
#, c-format
msgid "All"
msgstr "すべて"

#: ../Rpmdrake/gui.pm:1026 ../rpmdrake:201
#, c-format
msgid "Upgradable"
msgstr "更新可能"

#: ../Rpmdrake/gui.pm:1026 ../rpmdrake:369
#, c-format
msgid "Installed"
msgstr "インストール済み"

#: ../Rpmdrake/gui.pm:1027 ../rpmdrake:201
#, c-format
msgid "Addable"
msgstr "追加可能"

#: ../Rpmdrake/gui.pm:1039
#, c-format
msgid "Description not available for this package\n"
msgstr "このパッケージには説明がありません\n"

#: ../Rpmdrake/icon.pm:36
#, c-format
msgid "Accessibility"
msgstr "アクセシビリティ"

#: ../Rpmdrake/icon.pm:37 ../Rpmdrake/icon.pm:38 ../Rpmdrake/icon.pm:39
#: ../Rpmdrake/icon.pm:40 ../Rpmdrake/icon.pm:41
#, c-format
msgid "Archiving"
msgstr "アーカイバ"

#: ../Rpmdrake/icon.pm:38
#, c-format
msgid "Backup"
msgstr "バックアップ"

#: ../Rpmdrake/icon.pm:39
#, c-format
msgid "Cd burning"
msgstr "CD ライター"

#: ../Rpmdrake/icon.pm:40
#, c-format
msgid "Compression"
msgstr "圧縮/解凍"

#: ../Rpmdrake/icon.pm:41 ../Rpmdrake/icon.pm:47 ../Rpmdrake/icon.pm:58
#: ../Rpmdrake/icon.pm:72 ../Rpmdrake/icon.pm:90 ../Rpmdrake/icon.pm:111
#: ../Rpmdrake/icon.pm:124 ../Rpmdrake/icon.pm:135
#, c-format
msgid "Other"
msgstr "その他"

#: ../Rpmdrake/icon.pm:42 ../Rpmdrake/icon.pm:43 ../Rpmdrake/icon.pm:44
#: ../Rpmdrake/icon.pm:45 ../Rpmdrake/icon.pm:46 ../Rpmdrake/icon.pm:47
#, c-format
msgid "Books"
msgstr "文書"

#: ../Rpmdrake/icon.pm:43
#, c-format
msgid "Computer books"
msgstr "コンピュータ関連"

#: ../Rpmdrake/icon.pm:44
#, c-format
msgid "Faqs"
msgstr "FAQ"

#: ../Rpmdrake/icon.pm:45
#, c-format
msgid "Howtos"
msgstr "HowTo"

#: ../Rpmdrake/icon.pm:46
#, c-format
msgid "Literature"
msgstr "文学"

#: ../Rpmdrake/icon.pm:48
#, c-format
msgid "Communications"
msgstr "通信"

#: ../Rpmdrake/icon.pm:49 ../Rpmdrake/icon.pm:53
#, c-format
msgid "Databases"
msgstr "データベース"

#: ../Rpmdrake/icon.pm:50 ../Rpmdrake/icon.pm:51 ../Rpmdrake/icon.pm:52
#: ../Rpmdrake/icon.pm:53 ../Rpmdrake/icon.pm:54 ../Rpmdrake/icon.pm:55
#: ../Rpmdrake/icon.pm:56 ../Rpmdrake/icon.pm:57 ../Rpmdrake/icon.pm:58
#: ../Rpmdrake/icon.pm:59 ../Rpmdrake/icon.pm:60 ../Rpmdrake/icon.pm:61
#: ../Rpmdrake/icon.pm:62 ../Rpmdrake/icon.pm:173 ../Rpmdrake/icon.pm:174
#: ../Rpmdrake/icon.pm:175
#, c-format
msgid "Development"
msgstr "開発"

#: ../Rpmdrake/icon.pm:51
#, c-format
msgid "C"
msgstr "C"

#: ../Rpmdrake/icon.pm:52
#, c-format
msgid "C++"
msgstr "C++"

#: ../Rpmdrake/icon.pm:54
#, c-format
msgid "GNOME and GTK+"
msgstr "GNOME と GTK+"

#: ../Rpmdrake/icon.pm:55
#, c-format
msgid "Java"
msgstr "Java"

#: ../Rpmdrake/icon.pm:56
#, c-format
msgid "KDE and Qt"
msgstr "KDE と Qt"

#: ../Rpmdrake/icon.pm:57
#, c-format
msgid "Kernel"
msgstr "カーネル"

#: ../Rpmdrake/icon.pm:59
#, c-format
msgid "Perl"
msgstr "Perl"

#: ../Rpmdrake/icon.pm:60
#, c-format
msgid "PHP"
msgstr "PHP"

#: ../Rpmdrake/icon.pm:61
#, c-format
msgid "Python"
msgstr "Python"

#. -PO: This is a package/product name. Only translate it if needed:
#: ../Rpmdrake/icon.pm:62 ../Rpmdrake/icon.pm:150
#, c-format
msgid "X11"
msgstr "X11"

#: ../Rpmdrake/icon.pm:63
#, c-format
msgid "Editors"
msgstr "エディタ"

#: ../Rpmdrake/icon.pm:64
#, c-format
msgid "Education"
msgstr "教育"

#: ../Rpmdrake/icon.pm:65
#, c-format
msgid "Emulators"
msgstr "エミュレータ"

#: ../Rpmdrake/icon.pm:66
#, c-format
msgid "File tools"
msgstr "ファイルツール"

#: ../Rpmdrake/icon.pm:67 ../Rpmdrake/icon.pm:68 ../Rpmdrake/icon.pm:69
#: ../Rpmdrake/icon.pm:70 ../Rpmdrake/icon.pm:71 ../Rpmdrake/icon.pm:72
#: ../Rpmdrake/icon.pm:73 ../Rpmdrake/icon.pm:74 ../Rpmdrake/icon.pm:75
#, c-format
msgid "Games"
msgstr "ゲーム"

#: ../Rpmdrake/icon.pm:68
#, c-format
msgid "Adventure"
msgstr "アドベンチャー"

#: ../Rpmdrake/icon.pm:69
#, c-format
msgid "Arcade"
msgstr "アーケード"

#: ../Rpmdrake/icon.pm:70
#, c-format
msgid "Boards"
msgstr "ボードゲーム"

#: ../Rpmdrake/icon.pm:71
#, c-format
msgid "Cards"
msgstr "トランプ"

#: ../Rpmdrake/icon.pm:73
#, c-format
msgid "Puzzles"
msgstr "パズル"

#: ../Rpmdrake/icon.pm:74
#, c-format
msgid "Sports"
msgstr "スポーツ"

#: ../Rpmdrake/icon.pm:75
#, c-format
msgid "Strategy"
msgstr "戦略ゲーム"

#: ../Rpmdrake/icon.pm:76 ../Rpmdrake/icon.pm:77 ../Rpmdrake/icon.pm:80
#: ../Rpmdrake/icon.pm:81 ../Rpmdrake/icon.pm:84 ../Rpmdrake/icon.pm:87
#: ../Rpmdrake/icon.pm:90 ../Rpmdrake/icon.pm:91 ../Rpmdrake/icon.pm:94
#: ../Rpmdrake/icon.pm:97
#, c-format
msgid "Graphical desktop"
msgstr "グラフィカルデスクトップ"

#. -PO: This is a package/product name. Only translate it if needed:
#: ../Rpmdrake/icon.pm:79
#, c-format
msgid "Enlightenment"
msgstr "Enlightenment"

#: ../Rpmdrake/icon.pm:80
#, c-format
msgid "FVWM based"
msgstr "FVWM 系"

#. -PO: This is a package/product name. Only translate it if needed:
#: ../Rpmdrake/icon.pm:83
#, c-format
msgid "GNOME"
msgstr "GNOME"

#. -PO: This is a package/product name. Only translate it if needed:
#: ../Rpmdrake/icon.pm:86
#, c-format
msgid "Icewm"
msgstr "Icewm"

#. -PO: This is a package/product name. Only translate it if needed:
#: ../Rpmdrake/icon.pm:89
#, c-format
msgid "KDE"
msgstr "KDE"

#. -PO: This is a package/product name. Only translate it if needed:
#: ../Rpmdrake/icon.pm:93
#, c-format
msgid "Sawfish"
msgstr "Sawfish"

#. -PO: This is a package/product name. Only translate it if needed:
#: ../Rpmdrake/icon.pm:96
#, c-format
msgid "WindowMaker"
msgstr "WindowMaker"

#. -PO: This is a package/product name. Only translate it if needed:
#: ../Rpmdrake/icon.pm:99
#, c-format
msgid "Xfce"
msgstr "Xfce"

#: ../Rpmdrake/icon.pm:100
#, c-format
msgid "Graphics"
msgstr "グラフィックス"

#: ../Rpmdrake/icon.pm:101
#, c-format
msgid "Monitoring"
msgstr "モニタリング"

#: ../Rpmdrake/icon.pm:102 ../Rpmdrake/icon.pm:103
#, c-format
msgid "Multimedia"
msgstr "マルチメディア"

#: ../Rpmdrake/icon.pm:103 ../Rpmdrake/icon.pm:154
#, c-format
msgid "Video"
msgstr "動画"

#: ../Rpmdrake/icon.pm:104 ../Rpmdrake/icon.pm:105 ../Rpmdrake/icon.pm:106
#: ../Rpmdrake/icon.pm:107 ../Rpmdrake/icon.pm:108 ../Rpmdrake/icon.pm:109
#: ../Rpmdrake/icon.pm:110 ../Rpmdrake/icon.pm:111 ../Rpmdrake/icon.pm:112
#: ../Rpmdrake/icon.pm:113 ../Rpmdrake/icon.pm:134
#, c-format
msgid "Networking"
msgstr "ネットワーキング"

#: ../Rpmdrake/icon.pm:105
#, c-format
msgid "Chat"
msgstr "チャット"

#: ../Rpmdrake/icon.pm:106
#, c-format
msgid "File transfer"
msgstr "ファイル転送"

#: ../Rpmdrake/icon.pm:107
#, c-format
msgid "IRC"
msgstr "IRC"

#: ../Rpmdrake/icon.pm:108
#, c-format
msgid "Instant messaging"
msgstr "インスタントメッセージ"

#: ../Rpmdrake/icon.pm:109 ../Rpmdrake/icon.pm:180
#, c-format
msgid "Mail"
msgstr "メール"

#: ../Rpmdrake/icon.pm:110
#, c-format
msgid "News"
msgstr "ニュース"

#: ../Rpmdrake/icon.pm:112
#, c-format
msgid "Remote access"
msgstr "リモートアクセス"

#: ../Rpmdrake/icon.pm:113
#, c-format
msgid "WWW"
msgstr "ウェブ"

#: ../Rpmdrake/icon.pm:114
#, c-format
msgid "Office"
msgstr "オフィス"

#: ../Rpmdrake/icon.pm:115
#, c-format
msgid "Public Keys"
msgstr "公開鍵"

#: ../Rpmdrake/icon.pm:116
#, c-format
msgid "Publishing"
msgstr "出版"

#: ../Rpmdrake/icon.pm:117 ../Rpmdrake/icon.pm:118 ../Rpmdrake/icon.pm:119
#: ../Rpmdrake/icon.pm:120 ../Rpmdrake/icon.pm:121 ../Rpmdrake/icon.pm:122
#: ../Rpmdrake/icon.pm:123 ../Rpmdrake/icon.pm:124 ../Rpmdrake/icon.pm:125
#, c-format
msgid "Sciences"
msgstr "サイエンス"

#: ../Rpmdrake/icon.pm:118
#, c-format
msgid "Astronomy"
msgstr "天文学"

#: ../Rpmdrake/icon.pm:119
#, c-format
msgid "Biology"
msgstr "生物学"

#: ../Rpmdrake/icon.pm:120
#, c-format
msgid "Chemistry"
msgstr "化学"

#: ../Rpmdrake/icon.pm:121
#, c-format
msgid "Computer science"
msgstr "コンピュータ科学"

#: ../Rpmdrake/icon.pm:122
#, c-format
msgid "Geosciences"
msgstr "地球科学"

#: ../Rpmdrake/icon.pm:123
#, c-format
msgid "Mathematics"
msgstr "数学"

#: ../Rpmdrake/icon.pm:125
#, c-format
msgid "Physics"
msgstr "物理学"

#: ../Rpmdrake/icon.pm:126
#, c-format
msgid "Shells"
msgstr "シェル"

#: ../Rpmdrake/icon.pm:127
#, c-format
msgid "Sound"
msgstr "サウンド"

#: ../Rpmdrake/icon.pm:128 ../Rpmdrake/icon.pm:129 ../Rpmdrake/icon.pm:130
#: ../Rpmdrake/icon.pm:131 ../Rpmdrake/icon.pm:132 ../Rpmdrake/icon.pm:133
#: ../Rpmdrake/icon.pm:134 ../Rpmdrake/icon.pm:135 ../Rpmdrake/icon.pm:136
#: ../Rpmdrake/icon.pm:137 ../Rpmdrake/icon.pm:138 ../Rpmdrake/icon.pm:139
#: ../Rpmdrake/icon.pm:140 ../Rpmdrake/icon.pm:141 ../Rpmdrake/icon.pm:142
#: ../Rpmdrake/icon.pm:143 ../Rpmdrake/icon.pm:144 ../Rpmdrake/icon.pm:145
#: ../Rpmdrake/icon.pm:146 ../Rpmdrake/icon.pm:147 ../Rpmdrake/icon.pm:148
#, c-format
msgid "System"
msgstr "システム"

#: ../Rpmdrake/icon.pm:129
#, c-format
msgid "Base"
msgstr "ベース"

#: ../Rpmdrake/icon.pm:130
#, c-format
msgid "Cluster"
msgstr "クラスタ"

#: ../Rpmdrake/icon.pm:131 ../Rpmdrake/icon.pm:132 ../Rpmdrake/icon.pm:133
#: ../Rpmdrake/icon.pm:134 ../Rpmdrake/icon.pm:135 ../Rpmdrake/icon.pm:136
#: ../Rpmdrake/icon.pm:137 ../Rpmdrake/icon.pm:158
#, c-format
msgid "Configuration"
msgstr "設定"

#: ../Rpmdrake/icon.pm:132
#, c-format
msgid "Boot and Init"
msgstr "Boot と Init"

#: ../Rpmdrake/icon.pm:133
#, c-format
msgid "Hardware"
msgstr "ハードウェア"

#: ../Rpmdrake/icon.pm:136
#, c-format
msgid "Packaging"
msgstr "RPM の管理"

#: ../Rpmdrake/icon.pm:137 ../Rpmdrake/icon.pm:146
#, c-format
msgid "Printing"
msgstr "印刷"

#: ../Rpmdrake/icon.pm:138 ../Rpmdrake/icon.pm:139 ../Rpmdrake/icon.pm:140
#: ../Rpmdrake/icon.pm:141 ../Rpmdrake/icon.pm:142
#, c-format
msgid "Fonts"
msgstr "フォント"

#: ../Rpmdrake/icon.pm:139
#, c-format
msgid "Console"
msgstr "コンソール"

#: ../Rpmdrake/icon.pm:140
#, c-format
msgid "True type"
msgstr "True type"

#: ../Rpmdrake/icon.pm:141
#, c-format
msgid "Type1"
msgstr "Type1"

#: ../Rpmdrake/icon.pm:142
#, c-format
msgid "X11 bitmap"
msgstr "X11 ビットマップ"

#: ../Rpmdrake/icon.pm:143
#, c-format
msgid "Internationalization"
msgstr "国際化"

#: ../Rpmdrake/icon.pm:144
#, c-format
msgid "Kernel and hardware"
msgstr "カーネルとハードウェア"

#: ../Rpmdrake/icon.pm:145
#, c-format
msgid "Libraries"
msgstr "ライブラリ"

#: ../Rpmdrake/icon.pm:147
#, c-format
msgid "Servers"
msgstr "サーバ"

#: ../Rpmdrake/icon.pm:151
#, c-format
msgid "Terminals"
msgstr "ターミナル"

#: ../Rpmdrake/icon.pm:152
#, c-format
msgid "Text tools"
msgstr "テキストツール"

#: ../Rpmdrake/icon.pm:153
#, c-format
msgid "Toys"
msgstr "おもちゃ"

#: ../Rpmdrake/icon.pm:157 ../Rpmdrake/icon.pm:158 ../Rpmdrake/icon.pm:159
#: ../Rpmdrake/icon.pm:160 ../Rpmdrake/icon.pm:161 ../Rpmdrake/icon.pm:162
#: ../Rpmdrake/icon.pm:163 ../Rpmdrake/icon.pm:164 ../Rpmdrake/icon.pm:165
#: ../Rpmdrake/icon.pm:166
#, c-format
msgid "Workstation"
msgstr "ワークステーション"

#: ../Rpmdrake/icon.pm:159
#, c-format
msgid "Console Tools"
msgstr "コンソールツール"

#: ../Rpmdrake/icon.pm:160 ../Rpmdrake/icon.pm:175
#, c-format
msgid "Documentation"
msgstr "ドキュメント"

#: ../Rpmdrake/icon.pm:161
#, c-format
msgid "Game station"
msgstr "ゲームステーション"

#: ../Rpmdrake/icon.pm:162
#, c-format
msgid "Internet station"
msgstr "インターネットステーション"

#: ../Rpmdrake/icon.pm:163
#, c-format
msgid "Multimedia station"
msgstr "マルチメディアステーション"

#: ../Rpmdrake/icon.pm:164
#, c-format
msgid "Network Computer (client)"
msgstr "ネットワークコンピュータ (クライアント)"

#: ../Rpmdrake/icon.pm:165
#, c-format
msgid "Office Workstation"
msgstr "オフィスワークステーション"

#: ../Rpmdrake/icon.pm:166
#, c-format
msgid "Scientific Workstation"
msgstr "科学ワークステーション"

#: ../Rpmdrake/icon.pm:167 ../Rpmdrake/icon.pm:169 ../Rpmdrake/icon.pm:170
#: ../Rpmdrake/icon.pm:171 ../Rpmdrake/icon.pm:172
#, c-format
msgid "Graphical Environment"
msgstr "グラフィカル環境"

#: ../Rpmdrake/icon.pm:169
#, c-format
msgid "GNOME Workstation"
msgstr "GNOME ワークステーション"

#: ../Rpmdrake/icon.pm:170
#, c-format
msgid "IceWm Desktop"
msgstr "IceWm デスクトップ"

#: ../Rpmdrake/icon.pm:171
#, c-format
msgid "KDE Workstation"
msgstr "KDE ワークステーション"

#: ../Rpmdrake/icon.pm:172
#, c-format
msgid "Other Graphical Desktops"
msgstr "その他のグラフィカルデスクトップ"

#: ../Rpmdrake/icon.pm:176 ../Rpmdrake/icon.pm:177 ../Rpmdrake/icon.pm:178
#: ../Rpmdrake/icon.pm:179 ../Rpmdrake/icon.pm:180 ../Rpmdrake/icon.pm:181
#: ../Rpmdrake/icon.pm:182 ../Rpmdrake/icon.pm:183
#, c-format
msgid "Server"
msgstr "サーバ"

#: ../Rpmdrake/icon.pm:177
#, c-format
msgid "DNS/NIS"
msgstr "DNS/NIS"

#: ../Rpmdrake/icon.pm:178
#, c-format
msgid "Database"
msgstr "データベース"

#: ../Rpmdrake/icon.pm:179
#, c-format
msgid "Firewall/Router"
msgstr "ファイアウォール/ルータ"

#: ../Rpmdrake/icon.pm:181
#, c-format
msgid "Mail/Groupware/News"
msgstr "メール/グループウェア/ニュース"

#: ../Rpmdrake/icon.pm:182
#, c-format
msgid "Network Computer server"
msgstr "ネットワークコンピュータ (サーバ)"

#: ../Rpmdrake/icon.pm:183
#, c-format
msgid "Web/FTP"
msgstr "Web/FTP"

#: ../Rpmdrake/init.pm:49
#, c-format
msgid "Usage: %s [OPTION]..."
msgstr "使い方: %s [オプション]..."

#: ../Rpmdrake/init.pm:50
#, c-format
msgid "  --auto                 assume default answers to questions"
msgstr "  --auto                 質問に対してデフォルトの答えを想定する"

#: ../Rpmdrake/init.pm:51
#, c-format
msgid ""
"  --changelog-first      display changelog before filelist in the "
"description window"
msgstr ""
"  --changelog-first      詳細情報のチェンジログをファイルリストより先に表示す"
"る"

#: ../Rpmdrake/init.pm:52
#, c-format
msgid "  --media=medium1,..     limit to given media"
msgstr "  --media=medium1,..     指定したメディアだけを使う"

#: ../Rpmdrake/init.pm:53
#, c-format
msgid ""
"  --merge-all-rpmnew     propose to merge all .rpmnew/.rpmsave files found"
msgstr ""
"  --merge-all-rpmnew     .rpmnew や .rpmsave ファイルがあればすべてマージする"

#: ../Rpmdrake/init.pm:54
#, c-format
msgid "  --mode=MODE            set mode (install (default), remove, update)"
msgstr ""
"  --mode=MODE            モードを指定: install (デフォルト), remove, update"

#: ../Rpmdrake/init.pm:55
#, c-format
msgid ""
"  --justdb               update the database, but do not modify the "
"filesystem"
msgstr ""
"  --justdb               データベースを更新、ファイルシステムは変更しない"

#: ../Rpmdrake/init.pm:56
#, c-format
msgid ""
"  --no-confirmation      don't ask first confirmation question in update mode"
msgstr ""
"  --no-confirmation      update モードで最初の確認メッセージを表示しない"

#: ../Rpmdrake/init.pm:57
#, c-format
msgid "  --no-media-update      don't update media at startup"
msgstr "  --no-media-update      起動時にメディアを更新しない"

#: ../Rpmdrake/init.pm:58
#, c-format
msgid "  --no-verify-rpm        don't verify packages signatures"
msgstr "  --no-verify-rpm        パッケージの署名を確認しない"

#: ../Rpmdrake/init.pm:59
#, c-format
msgid ""
"  --parallel=alias,host  be in parallel mode, use \"alias\" group, use \"host"
"\" machine to show needed deps"
msgstr ""
"  --parallel=alias,host  パラレルモードで依存を表示するのに \"alias\" グルー"
"プまたは \"host\" マシンを使う"

#: ../Rpmdrake/init.pm:60
#, c-format
msgid "  --rpm-root=path        use another root for rpm installation"
msgstr "  --rpm-root=path        RPM のインストールに別のルートを使う"

#: ../Rpmdrake/init.pm:61
#, c-format
msgid ""
"  --urpmi-root           use another root for urpmi db & rpm installation"
msgstr ""
"  --urpmi-root           urpmi db と RPM のインストールに他のルートを使う"

#: ../Rpmdrake/init.pm:62
#, c-format
msgid "  --run-as-root          force to run as root"
msgstr "  --run-as-root          強制的に root で実行する"

#: ../Rpmdrake/init.pm:63
#, c-format
msgid "  --search=pkg           run search for \"pkg\""
msgstr "  --search=pkg           指定したパッケージを検索し表示する"

#: ../Rpmdrake/init.pm:64
#, c-format
msgid ""
"  --test                 only verify if the installation can be achieved "
"correctly"
msgstr "  --test                 正しくインストールできるかどうかテストする"

#: ../Rpmdrake/init.pm:65
#, c-format
msgid "  --version              print this tool's version number\n"
msgstr "  --version              このツールのバージョンを表示\n"

#: ../Rpmdrake/init.pm:154
#, c-format
msgid "Running in user mode"
msgstr "ユーザモードで実行"

#: ../Rpmdrake/init.pm:155
#, c-format
msgid ""
"You are launching this program as a normal user.\n"
"You will not be able to perform modifications on the system,\n"
"but you may still browse the existing database."
msgstr ""
"一般ユーザでこのプログラムを実行しています。\n"
"現在の権限ではシステムを変更することはできませんが\n"
"データベースを閲覧することはできます。"

#: ../Rpmdrake/pkg.pm:111
#, c-format
msgid "Getting information from XML meta-data from %s..."
msgstr "%s の XML メタデータから情報を取得..."

#: ../Rpmdrake/pkg.pm:115
#, c-format
msgid "Getting '%s' from XML meta-data..."
msgstr "XML メタデータから '%s' を取得..."

#: ../Rpmdrake/pkg.pm:118 ../Rpmdrake/pkg.pm:419 ../Rpmdrake/pkg.pm:709
#: ../Rpmdrake/pkg.pm:916 ../rpmdrake:134 ../rpmdrake.pm:385
#: ../rpmdrake.pm:594
#, c-format
msgid "Please wait"
msgstr "お待ちください"

#: ../Rpmdrake/pkg.pm:132
#, c-format
msgid "No xml info for medium \"%s\", only partial result for package %s"
msgstr ""
"メディア %s に XML 情報がないため、パッケージ %s の検索結果は不完全です"

#: ../Rpmdrake/pkg.pm:134
#, c-format
msgid ""
"No xml info for medium \"%s\", unable to return any result for package %s"
msgstr ""
"メディア %s に XML 情報がないため、パッケージ %s の検索結果を返せません"

#: ../Rpmdrake/pkg.pm:187 ../Rpmdrake/pkg.pm:192
#, c-format
msgid "Downloading package `%s'..."
msgstr "パッケージ %s をダウンロード..."

#: ../Rpmdrake/pkg.pm:194
#, c-format
msgid "        %s%% of %s completed, ETA = %s, speed = %s"
msgstr "        %s%% / %s 完了, ETA = %s, 速度 = %s"