Commit Graph

694 Commits

Author SHA1 Message Date
Jo-Philipp Wich
55178554c2 base-files: reject invalid uci keys in network_get_device() and related procedures (#13886)
SVN-Revision: 37345
2013-07-15 13:42:58 +00:00
Felix Fietkau
b95bdc8ab5 kernel/base-files: clean up old code related to refreshing mtd partitions, it is no longer used anywhere
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 37282
2013-07-14 12:56:58 +00:00
John Crispin
8eb56a88a4 procd: add a small script that handles config reloads until configd is ready
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 37248
2013-07-11 17:00:54 +00:00
John Crispin
8069d87d3c base-files: convert sysntpd init script to procd
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 37244
2013-07-11 17:00:35 +00:00
John Crispin
06ae364c3d base-files: run readlink on initscript name before opening services
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 37241
2013-07-11 17:00:21 +00:00
John Crispin
523114e741 base-file: usbfs is no longer mounted under /proc/bus/usb
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 37240
2013-07-11 17:00:17 +00:00
John Crispin
9e36e10cf7 base-files: add 2 missing variable defines
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 37204
2013-07-08 16:35:02 +00:00
John Crispin
43a3d87b83 package: fix insmod on install
the procd changes broke the postinst insmod.

Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 37015
2013-06-22 22:09:40 +00:00
John Crispin
4c43cacce0 base-files: module loading is now handled by ubox/kmodloader
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 37003
2013-06-21 16:53:59 +00:00
John Crispin
d0db343fc4 base-files: /etc/init.d/rcS is no longer needed, procd handles this for us now
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 37002
2013-06-21 16:53:55 +00:00
John Crispin
533dfc39e3 base-files: drop 2 pointless hotplug trigger stubs
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 37001
2013-06-21 16:53:51 +00:00
Jo-Philipp Wich
265a2deba3 base-files: network.sh: extend network_get_ipaddr6() / network_get_subnet6() to take ipv6-prefix-assignment into account, add further helper functions to fetch all ips of a given interface
SVN-Revision: 36942
2013-06-17 11:33:36 +00:00
Steven Barth
33c620773d base-files: remove unnecessary early sysctl-hack
SVN-Revision: 36920
2013-06-11 14:10:45 +00:00
Steven Barth
e2f33bedfa base-files: set default IPv6 forwarding value to 1
SVN-Revision: 36918
2013-06-11 13:30:18 +00:00
John Crispin
e078f649b5 procd: make the preinit rules wildcard all buttons for failsafe
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 36896
2013-06-10 08:24:44 +00:00
John Crispin
1f52c5a72c sysupgrade: create state file so procd knows when a sysupgrade is in progress
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 36893
2013-06-10 08:24:31 +00:00
John Crispin
5e45a68a4a base-files: fix failsafe via button press
entering failsafe by pressing a button during boot was broken for procd as init

Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 36891
2013-06-10 08:24:13 +00:00
John Crispin
9353e01af4 base-files: change PATH order
This allows packages to override busybox applets by placing the new
binaries in /usr/{sbin,bin}

Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 36890
2013-06-10 08:24:02 +00:00
Steven Barth
3f67360012 base-files: use less entropy when generating ULAs
SVN-Revision: 36865
2013-06-06 09:52:00 +00:00
Jo-Philipp Wich
026271d03c base-files: change network_find_wan() procedure to ignore default gateways in different routing tables
SVN-Revision: 36553
2013-05-06 09:33:56 +00:00
John Crispin
c7c243669c sysupgrade: fixes broken pipe error during sysupgade
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 36548
2013-05-05 12:41:42 +00:00
John Crispin
831c7ea04f preinit: move cmdline failsafe= handling ot the generic code
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 36430
2013-04-25 19:02:37 +00:00
John Crispin
811d90ff40 mount_root: prepare base-files
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 36429
2013-04-25 19:02:32 +00:00
John Crispin
39469dea7f boot: make use of kmodloader if it is available
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 36428
2013-04-25 19:02:28 +00:00
Steven Barth
4e8f7f37ed Change default IPv6 config to enable DHCPv6-PD
SVN-Revision: 36384
2013-04-22 19:40:16 +00:00
Steven Barth
ea94d66b0f Adapt default network configuration for IPv6
SVN-Revision: 36278
2013-04-09 08:03:08 +00:00
Jonas Gorski
574bab45ac base-files: firstboot: only ask for confirmation on TTY
Also allow '-y' to force the reset.

SVN-Revision: 36133
2013-03-27 12:39:42 +00:00
Jo-Philipp Wich
6bddf226d3 base-files: move sysctl init after boot
SVN-Revision: 36131
2013-03-26 10:02:58 +00:00
Jo-Philipp Wich
7aace3ee3e base-files: fix bad start index in previous commit
SVN-Revision: 36130
2013-03-25 18:45:23 +00:00
Jo-Philipp Wich
acca7eadc4 package/base-files: change sysctl handling Move /etc/init.d/sysctl to index 00 and add hotplug script that applies interface specific sysctls for interfaces that only appear later - this allows to reliably configure per-interface parameters in sysctl.conf, e.g. to disable ipv6 autoconfig on a specific iface.
SVN-Revision: 36129
2013-03-25 18:43:30 +00:00
Florian Fainelli
3810cc0f46 base-files: sysupgrade fail with eglibc
With eglibc, "ldd busybox" give us
    libcrypt.so.1 => /lib/libcrypt.so.1 (0x774be000)
    libm.so.6 => /lib/libm.so.6 (0x773e4000)
    libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x773c0000)
    libc.so.6 => /lib/libc.so.6 (0x77276000)
    /lib/ld.so.1 (0x774fe000)

Thus /lib/ld.so.1 is not printed by the libs fonction and isn't copied to the 'new' root before pivot root
libs() { ldd $* | awk '{print $3}'; }
https://dev.openwrt.org/browser/trunk/package/base-files/files/lib/upgrade/common.sh

With uclibc the last line of "ldd busybox" is
    ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x77ada000)

Don't know for musl!

This patch replace https://dev.openwrt.org/changeset/19167, as glibc is gone
The other way around is to rework libs()

Please apply the fix (mine or another) on trunk and AA
Might fix https://dev.openwrt.org/ticket/12273

Signed-off-by: Etienne CHAMPETIER <etienne.champetier@free.fr>
Signed-off-by: Florian Fainelli <florian@openwrt.org>

SVN-Revision: 36107
2013-03-22 10:06:06 +00:00
John Crispin
ada74b8732 sysupgrade was broken as procd was getting killed
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 36031
2013-03-14 18:43:58 +00:00
John Crispin
f43b7934d2 make basefiles aware of procd
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 36003
2013-03-13 18:11:19 +00:00
Jonas Gorski
29a3af1bb8 base-files: make firstboot ask for confirmation
To prevent accidential resets ask for confirmation (and default to n).

Signed-off-by: Jonas Gorski <jogo@openwrt.org>

SVN-Revision: 35712
2013-02-21 11:45:14 +00:00
Gabor Juhos
6c627a266b base-files: introduce commonly used helper functions for setting leds
Currently, most platforms define such helpers in their own diag.sh
implementation with almost identical code. By factoring out the
common ground it's possible to simplify maintainability and
homogenize the haptics over multiple platforms (so far as is
reasonably practicable, in a next step).

[juhosg:
 - fix led_set_attr parameters in led_timer
 - add led_morse and status_led_set_morse helpers
 - add status_led_blink_{preinit,failsafe} helpers]

Signed-off-by: Michael Heimpold <mhei@heimpold.de>
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 35648
2013-02-18 09:56:23 +00:00
Gabor Juhos
c4f14fab9b base-files: minor cosmetic corrections for functions.sh
- update copyright header
  - remove superfluous shebang left-over from changeset 34794
  - unify function declaration

[juhosg: keep Vertical Communications' copyright notice]

Signed-off-by: Michael Heimpold <mhei@heimpold.de>
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 35646
2013-02-17 21:47:03 +00:00
Gabor Juhos
5a8c63b47e base-files: add macaddr_{add,2bin,setbit_la} helpers
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 35614
2013-02-16 11:50:22 +00:00
Gabor Juhos
70d40b2ddd base-files: add mtd_get_mac_{ascii,binary} helpers
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 35612
2013-02-16 11:50:19 +00:00
Steven Barth
92ad26d1b6 base-files: Fix IPv6 early sysctls again * Kernel IPv6 /proc interface inconsistency caused races
SVN-Revision: 35417
2013-02-01 12:28:24 +00:00
Steven Barth
ea7c9c85a8 base-files: Fix race-conditions with IPv6 sysctls
SVN-Revision: 35368
2013-01-29 10:13:33 +00:00
Steven Barth
5f735b291f base-files: remove IPv6-forwarding setting for all interfaces
SVN-Revision: 35344
2013-01-28 13:53:38 +00:00
Steven Barth
231f8c2969 base-files: fix network_get_prefix6
SVN-Revision: 35300
2013-01-22 16:47:16 +00:00
Steven Barth
e0a338c969 base-files: Set default value for IPv6 forwarding
SVN-Revision: 35299
2013-01-22 16:47:09 +00:00
Jo-Philipp Wich
1941fb309d base-files: network.sh: fix typo in previous commit
SVN-Revision: 35287
2013-01-21 19:02:38 +00:00
Jo-Philipp Wich
3b2db1838a base-files: network.sh: simplify network_get_prefix6()
SVN-Revision: 35286
2013-01-21 18:54:58 +00:00
Jo-Philipp Wich
648bd409e3 base-files: use numerically prefixed uci-defaults names
SVN-Revision: 35218
2013-01-18 12:46:43 +00:00
Steven Barth
411d818008 base-files: rename ULA generation script
SVN-Revision: 35204
2013-01-17 16:16:02 +00:00
Steven Barth
847cd984b9 base-files: add support for ipv6-prefixes in connection with netifd
SVN-Revision: 35168
2013-01-15 13:07:51 +00:00
Vasilis Tsiligiannis
674439299f base-files: Don't pass '--set-worker /lib/hotplug2/worker_fork.so' to hotplug2 (#12781)
SVN-Revision: 35095
2013-01-11 13:20:51 +00:00
Jo-Philipp Wich
70b0ef6322 sysupgrade: clarify online help
Fixes #12346.

Signed-off-by: Paul Fertser <fercerpav@gmail.com>

SVN-Revision: 34975
2013-01-02 16:21:30 +00:00
Jo-Philipp Wich
58070b0083 sysupgrade: do not require an extra argument after --restore-backup
Neither --create-backup nor --restore-backup need an image name (following
the backup filename). Treat them in uniform way.

Mostly fixes #12346.

Signed-off-by: Paul Fertser <fercerpav@gmail.com>

SVN-Revision: 34974
2013-01-02 16:21:26 +00:00
Steven Barth
f657787b52 base-files: Fix a typo in config_list_foreach
SVN-Revision: 34893
2012-12-27 14:10:01 +00:00
Jo-Philipp Wich
ab6e2e6928 base-files: ipcalc.sh: fix broken calculations on 64bit systems
Calculate complements by using awk's xor() function with a mask of 0xffffffff
instead of relying on the compl() function which appears to produce broken
results on certain 64bit architectures.

SVN-Revision: 34875
2012-12-23 22:18:43 +00:00
Felix Fietkau
bbc6694d98 base-files: add basic procd integration, let procd start (and restart) ubus instead of having an ubus init script
SVN-Revision: 34866
2012-12-22 18:56:09 +00:00
Mirko Vogt
4cca5cd4fd hot-fix nameclash in sysupgrade: rename pivot() to supivot() in sysupgrade
Sysupgrade defines its very own pivot() function.
Prior merging boot.sh and functions.sh sysupgrade just included boot.sh,
now it includes functions.sh which defines pivot() as well, however
slightly different which causes sysupgrade to fail.

This is a hot-fix to unbreak sysupgrade, however those two pivot()
functions should actually get merged.

SVN-Revision: 34815
2012-12-21 12:10:21 +00:00
Luka Perkov
65efd09b78 base-files: we don't need /etc/functions.sh symlink anymore
SVN-Revision: 34802
2012-12-20 15:15:30 +00:00
Mirko Vogt
4d4b2d3ced merge /lib/functions/boot.sh and /lib/functions.sh
SVN-Revision: 34794
2012-12-19 16:07:53 +00:00
Mirko Vogt
439a869090 Do not overload mount-call - trying to reduce confusion
The behaviour of calling 'mount' differed depending on whether it called
the busybox-mount, the mount of util-linux, the mount defined in
/lib/functions.sh and /lib/functions/boot.sh

/etc/preinit even included /lib/functions.sh and /lib/functions/boot.sh,
both re-defining 'mount'.

SVN-Revision: 34792
2012-12-19 16:07:46 +00:00
Jo-Philipp Wich
3339316fbe base-files: use json_is_a() in network.sh
SVN-Revision: 34733
2012-12-17 13:07:42 +00:00
Jo-Philipp Wich
17acf9bf27 base-files: rework cache handling in network.sh to keep the entire parsed ifstatus, use jshn namespaces to support using it concurrently with other jshn users
SVN-Revision: 34725
2012-12-16 20:17:18 +00:00
Jo-Philipp Wich
1600ba99e4 base-files: various enhancements to network.sh
- support reading inactive gateways and DNS information in
	  network_get_gateway(), network_get_dnsserver() and network_get_dnssearch()
	  by passing "true" as optional last argument
	- internally cache fetched values to speed up subsequent accesses to the same
	  data, introduce network_flush_cache() to clear them
	- add some inline function documentation

SVN-Revision: 34722
2012-12-16 18:22:02 +00:00
Gabor Juhos
1552af3131 base-files: add mtd_find_chardev helper
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 34648
2012-12-12 16:49:50 +00:00
Mirko Vogt
ee17703371 Revert "remove function find_mtd_part() from /lib/functions.sh"
Reverting commit 34641.
Function find_mtd_part() is needed by some scripts deployed
for certain targets but not including boot.sh after all.
Still, all this certainly needs some love.

SVN-Revision: 34642
2012-12-12 13:41:56 +00:00
Mirko Vogt
1521cdda0f remove function find_mtd_part() from /lib/functions.sh
Since all scripts using this function include /lib/functions/boot.sh -
where this function is defined as well - it can be dropped
from /lib/functions.sh. Also avoids further confusion about this
function being declared and defined in two different places.

SVN-Revision: 34641
2012-12-12 12:38:31 +00:00
Steven Barth
3b0e77ee6b Remove default sysctl-entry for IPv6 here (races)
SVN-Revision: 34417
2012-11-29 20:14:04 +00:00
Gabor Juhos
38fced86ee base-files: add support for the morse LED trigger
Write "delay" and "message" options to their respective files,
allowing Morse code message configuration through UCI.
The delay (dit length) defaults to 150ms (about 8 words per minute,
suitable for beginners).

Signed-off-by: Petr Viktorin <encukou@gmail.com>
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 34380
2012-11-25 17:20:49 +00:00
Florian Fainelli
5ae2524d3a base-files: use a natural mount syntax
Busybox built against musl-libc will choke on these otherwise, besides that
it is more natural to use the filesystem type, then options, then name, then
mountpoint.

Signed-off-by: Florian Fainelli <florian@openwrt.org>

SVN-Revision: 34308
2012-11-23 20:02:02 +00:00
Florian Fainelli
d3f22617a2 base-files: skip LEDs handled by rssileds in led init-script
Without this, /etc/init.d/led will try to set the non-existing 'rssi' trigger.
This doesn't harm as the kernel will refuse this setting, but it outputs some
ugly log-lines:
Jun 24 10:15:19 OpenWrt user.info sysinit: setting up led RSSILOW
Jun 24 10:15:19 OpenWrt user.info sysinit: sh: write error: Invalid argument
...

In order to avoid this, skip LEDs with trigger = "rssi" in /etc/init.d/led

Signed-off-by: Daniel Golle <dgolle@allnet.de>

SVN-Revision: 33717
2012-10-11 06:45:02 +00:00
Imre Kaloz
c5e5e70ab0 it's time to break the barriers
SVN-Revision: 33666
2012-10-08 13:12:37 +00:00
Felix Fietkau
c7c649126f base-files: remove obsolete entries from sysctl.conf (#12236)
SVN-Revision: 33532
2012-09-24 15:24:01 +00:00
Florian Fainelli
78f4cf3d70 base-files: release an attached loop device on umounting
Signed-off-by: Michael Heimpold <mhei@heimpold.de>

SVN-Revision: 33477
2012-09-19 15:13:44 +00:00
Jo-Philipp Wich
2165240c32 base-files: make file compare silent in migrate-sysctl
SVN-Revision: 33449
2012-09-17 18:36:51 +00:00
Jo-Philipp Wich
0fd1fb6252 base-files: add uci-defaults script to migrate sysctl.conf (#12196)
SVN-Revision: 33448
2012-09-17 17:15:56 +00:00
Jo-Philipp Wich
dac5ed38b6 base-files: remove route enabled check in lib/functions/network.sh after netifd bump
SVN-Revision: 33391
2012-09-13 08:47:10 +00:00
Gabor Juhos
ca857b7a50 base-files: uci-defaults for rssileds
Adds capability to add uci-defaults defining RSSI LEDs

Signed-off-by: Daniel Golle <dgolle@allnet.de>

SVN-Revision: 33164
2012-08-13 14:01:37 +00:00
Jo-Philipp Wich
70aaa116eb base-files: provide a sysupgrade -r (--restore-backup) option as convenience wrapper for tar -C / -x(v)zf
SVN-Revision: 33147
2012-08-12 13:20:27 +00:00
Jo-Philipp Wich
17dc1d5c44 base-files: fix option parsing of -F/--force parameter
SVN-Revision: 33075
2012-08-09 18:30:47 +00:00
Florian Fainelli
31e46b4293 base-files: check for ldd presence and executability (#11991)
SVN-Revision: 33057
2012-08-08 15:37:34 +00:00
Florian Fainelli
6afd1725f1 base-files: fix detection of standalone ldd
When standalone ldd is selected in config the binary is installed in /usr/bin/ldd.

Signed-off-by: Michael Heimpold <mhei@heimpold.de>

SVN-Revision: 32891
2012-07-27 15:35:00 +00:00
Vasilis Tsiligiannis
9ab1df3f48 base-files: Modernize hotplug2 rules (#11368)
SVN-Revision: 32711
2012-07-14 19:59:44 +00:00
Jo-Philipp Wich
ff3161a6c4 base-files: ensure that /sys is available during sysupgrade, some essential services like om-watchdog need it
SVN-Revision: 32587
2012-07-03 15:43:43 +00:00
Jo-Philipp Wich
b2e5c5f82e base-files: implement network_get_dnsserver() and network_get_dnssearch() in /lib/functions/network.sh
SVN-Revision: 32531
2012-06-29 19:04:11 +00:00
Jo-Philipp Wich
e654014352 base-files: only consider enabled default routes when finding the wan iface (#11774)
SVN-Revision: 32525
2012-06-29 11:58:35 +00:00
Felix Fietkau
6c2a295245 base-files: enable TCP timestamps, enable sack/dsack. (patch by Dave Täht)
A year of testing in the cerowrt project shows not using timestamps
to be a very bad idea in nearly any TCP at speeds above a few Mbit.

Lastly sack/dsack help on recovery from larger amounts of packet
loss.

SVN-Revision: 32513
2012-06-27 22:32:44 +00:00
Jo-Philipp Wich
f2dde4f5ba base-files: allow wireless ifaces to be part of multiple networks
SVN-Revision: 32503
2012-06-26 15:25:33 +00:00
Jo-Philipp Wich
57a7257569 base-files: implement network_get_gateway(), network_get_gateway6(), network_find_wan() and network_find_wan6() in /lib/functions/network.sh
SVN-Revision: 32397
2012-06-17 11:50:50 +00:00
Jo-Philipp Wich
bfe966574f base-files: enable shell tracing in initscripts when INIT_TRACE is set
SVN-Revision: 32340
2012-06-13 17:10:41 +00:00
Jo-Philipp Wich
9869b4da3c base-files: implement network_defer_device() and network_ready_device() wrappers for upcoming netifd iface deferring support
SVN-Revision: 32106
2012-06-07 14:55:26 +00:00
Jo-Philipp Wich
5e84df6bac base-files: ship a static initial shadow db instead of creating it from passwd with sed, this fixes registering of users at compile time
SVN-Revision: 32064
2012-06-05 17:48:41 +00:00
Jo-Philipp Wich
a044a43d06 base-files: make user_add() populate the shadow db as well
SVN-Revision: 32063
2012-06-05 17:40:32 +00:00
Jo-Philipp Wich
9ae901445b /etc/functions.sh => /lib/functions.sh
SVN-Revision: 32062
2012-06-05 16:04:23 +00:00
Gabor Juhos
eca7502dfd base-files: add LED specific functions to /lib/functions/uci-defaults
SVN-Revision: 31991
2012-05-29 16:39:16 +00:00
Jo-Philipp Wich
c11151bc70 base-files: add network_is_up()
SVN-Revision: 31978
2012-05-29 02:03:25 +00:00
Jo-Philipp Wich
bf52cbf108 base-files: let network_get_device() return the l3 interface, introduce network_get_physdev() to obtain the underlying iface (if applicable)
SVN-Revision: 31960
2012-05-29 00:20:16 +00:00
Jo-Philipp Wich
8ef9450b37 base-files: add network_get_device() to network.sh
SVN-Revision: 31937
2012-05-28 03:24:56 +00:00
Jo-Philipp Wich
f1d04190c5 base-files: introduce /lib/functions/network.sh This file will contain common procedures to deal with network interfaces. Initially provides network_get_ipaddr(), network_get_ipaddr6(), network_get_subnet() and network_get_subnet6() to determine the primary IP addresses or subnets of a given logical interface.
SVN-Revision: 31935
2012-05-28 03:15:02 +00:00
Felix Fietkau
166db84309 base-files: kill ubusd and udhcpc on sysupgrade as well
SVN-Revision: 31852
2012-05-23 21:54:12 +00:00
Felix Fietkau
5d6628a88c base-files: allow sysupgrade to kill netifd, fixes pppd shutdown on upgrade
SVN-Revision: 31851
2012-05-23 21:49:31 +00:00
Gabor Juhos
6aec1d72c2 package/base-files: copy /lib/functions.sh to the ramfs on sysupgrade
SVN-Revision: 31842
2012-05-23 21:05:20 +00:00
Jonas Gorski
80650c9475 base-files: wait for wifi modules to settle
On slower devices wifi drivers might take too long for detecting
devices, resulting in the wifi detect call not seeing them.

This was observed on a bcm6348 with bcm4318 wifi. Adding a one second
pause was enough for b43 to expose the device.

SVN-Revision: 31639
2012-05-06 21:25:42 +00:00