ALT Linux Sisyphus discussions
 help / color / mirror / Atom feed
* [sisyphus] I: nut-2.6.0, please test/help
@ 2011-02-19 21:54 Michael Shigorin
  2011-02-20  9:45 ` Yura Kalinichenko
  0 siblings, 1 reply; 4+ messages in thread
From: Michael Shigorin @ 2011-02-19 21:54 UTC (permalink / raw)
  To: sisyphus

	Здравствуйте.
Пилю тут урывками свежий nut, предлагаю заинтересованным
очередной полуфабрикат на изучение сквозь прицел напильника.

Из обнаруженного:

- в 2.6.0 теперь сами делают initgroups():
  server/upsd.c::main() около chdir()
  `-> common/common.c::become_user()
  => пришлось изобразить заполнение /var/lib/nut/etc/group
  в %pre пакета nut-server

- без указания опции "-4" upsd/upsdrvctl не стартуют при
  отсутствии ipv6, поскольку надо там аж 127.0.0.1 --
  воткнуто по умолчанию в /etc/sysconfig/upsd, спросил апстрим

Поскольку домашний UPS, похоже, помер как минимум батарейкой,
то с тестированием у меня сейчас туго.  В общем, оно здесь:
http://fly.osdn.org.ua/~mike/RPM/SRPMS/nut-2.6.0-alt1.src.rpm

-- 
 ---- WBR, Michael Shigorin <mike@altlinux.ru>
  ------ Linux.Kiev http://www.linux.kiev.ua/


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [sisyphus] I: nut-2.6.0, please test/help
  2011-02-19 21:54 [sisyphus] I: nut-2.6.0, please test/help Michael Shigorin
@ 2011-02-20  9:45 ` Yura Kalinichenko
  2011-02-20 12:48   ` Sergey Vlasov
  0 siblings, 1 reply; 4+ messages in thread
From: Yura Kalinichenko @ 2011-02-20  9:45 UTC (permalink / raw)
  To: shigorin, ALT Linux Sisyphus discussions

Michael Shigorin пишет:
> 	Здравствуйте.
> Пилю тут урывками свежий nut, 
Аналогично. Что радует - оно уже таки нормально конфигурится под ALT >=4.
> - без указания опции "-4" upsd/upsdrvctl не стартуют при
>   отсутствии ipv6, поскольку надо там аж 127.0.0.1 --
>   воткнуто по умолчанию в /etc/sysconfig/upsd, спросил апстрим
Я посмотрел как оно было сделано в 2.2.2 и повторил, вряд ли правильно - 
но "чтоб работало". По крайней мере upsd поднялся.

diff -U 2 -r nut-2.6.0.orig/server/upsd.c nut-2.6.0/server/upsd.c
--- nut-2.6.0.orig/server/upsd.c        2010-12-24 15:24:12 +0200
+++ nut-2.6.0/server/upsd.c     2011-02-12 12:58:33 +0200
@@ -546,10 +546,11 @@
        /* default behaviour if no LISTEN addres has been specified */
        if (!firstaddr) {
-               if (opt_af != AF_INET) {
-                       listen_add("::1", string_const(PORT));
-               }

-               if (opt_af != AF_INET6) {
+               if (opt_af == AF_INET6) {
+                       listen_add("::1", string_const(PORT));
+               } else if (opt_af == AF_INET) {
                        listen_add("127.0.0.1", string_const(PORT));
+               } else {
+                       listen_add("0.0.0.0", string_const(PORT));
                }
        }




-- 
SY, 
   Yura Kalinichenko



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [sisyphus] I: nut-2.6.0, please test/help
  2011-02-20  9:45 ` Yura Kalinichenko
@ 2011-02-20 12:48   ` Sergey Vlasov
  2011-02-20 19:24     ` Yura Kalinichenko
  0 siblings, 1 reply; 4+ messages in thread
From: Sergey Vlasov @ 2011-02-20 12:48 UTC (permalink / raw)
  To: sisyphus

[-- Attachment #1: Type: text/plain, Size: 2648 bytes --]

On Sun, Feb 20, 2011 at 11:45:34AM +0200, Yura Kalinichenko wrote:
> Michael Shigorin пишет:
> > 	Здравствуйте.
> > Пилю тут урывками свежий nut, 
> Аналогично. Что радует - оно уже таки нормально конфигурится под ALT >=4.
> > - без указания опции "-4" upsd/upsdrvctl не стартуют при
> >   отсутствии ipv6, поскольку надо там аж 127.0.0.1 --
> >   воткнуто по умолчанию в /etc/sysconfig/upsd, спросил апстрим
> Я посмотрел как оно было сделано в 2.2.2 и повторил, вряд ли правильно - 
> но "чтоб работало". По крайней мере upsd поднялся.
> 
> diff -U 2 -r nut-2.6.0.orig/server/upsd.c nut-2.6.0/server/upsd.c
> --- nut-2.6.0.orig/server/upsd.c        2010-12-24 15:24:12 +0200
> +++ nut-2.6.0/server/upsd.c     2011-02-12 12:58:33 +0200
> @@ -546,10 +546,11 @@
>         /* default behaviour if no LISTEN addres has been specified */
>         if (!firstaddr) {
> -               if (opt_af != AF_INET) {
> -                       listen_add("::1", string_const(PORT));
> -               }
> 
> -               if (opt_af != AF_INET6) {
> +               if (opt_af == AF_INET6) {
> +                       listen_add("::1", string_const(PORT));
> +               } else if (opt_af == AF_INET) {
>                         listen_add("127.0.0.1", string_const(PORT));
> +               } else {
> +                       listen_add("0.0.0.0", string_const(PORT));
>                 }
>         }

Такой вариант явно никуда не годится - по умолчанию пропадает не
только поддержка IPv6, но и привязка к localhost.  Вместо этого,
вероятно, надо для случая opt_af == AF_UNSPEC (опции -4 или -6 не
заданы явно) перед выполнением listen_add("::1", string_const(PORT))
проверять возможность создания сокета AF_INET6.

(Патч не тестировался даже gcc.)

--- nut-2.6.0/server/upsd.c.alt-ipv6-optional	2010-12-24 16:24:12.000000000 +0300
+++ nut-2.6.0/server/upsd.c	2011-02-20 15:44:01.508000003 +0300
@@ -539,6 +539,19 @@ static void client_readline(ctype_t *cli
 	return;
 }
 
+static int ipv6_available(void)
+{
+	int sock_fd;
+
+	if ((sock_fd = socket(AF_INET6, SOCK_STREAM, IPPROTO_TCP)) < 0) {
+		upsdebug_with_errno(3, "ipv6_available: socket");
+		return 0;
+	}
+
+	close(sock_fd);
+	return 1;
+}
+
 void server_load(void)
 {
 	stype_t	*server;
@@ -546,7 +559,9 @@ void server_load(void)
 	/* default behaviour if no LISTEN addres has been specified */
 	if (!firstaddr) {
 		if (opt_af != AF_INET) {
-			listen_add("::1", string_const(PORT));
+			if (opt_af == AF_INET6 || ipv6_available()) {
+				listen_add("::1", string_const(PORT));
+			}
 		}
 
 		if (opt_af != AF_INET6) {

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [sisyphus] I: nut-2.6.0, please test/help
  2011-02-20 12:48   ` Sergey Vlasov
@ 2011-02-20 19:24     ` Yura Kalinichenko
  0 siblings, 0 replies; 4+ messages in thread
From: Yura Kalinichenko @ 2011-02-20 19:24 UTC (permalink / raw)
  To: ALT Linux Sisyphus discussions

Sergey Vlasov пишет:
> Такой вариант явно никуда не годится 
Да я и не претендую. Сделал, в общем-то, без понимания сути - лишь бы 
завелось в моих условиях. Ваш патч, вероятно, правильный, и, главное - 
рабочий. Проверил, все OK. Его бы в upstream.

-- 
SY, 
   Yura Kalinichenko



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2011-02-20 19:24 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-02-19 21:54 [sisyphus] I: nut-2.6.0, please test/help Michael Shigorin
2011-02-20  9:45 ` Yura Kalinichenko
2011-02-20 12:48   ` Sergey Vlasov
2011-02-20 19:24     ` Yura Kalinichenko

ALT Linux Sisyphus discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/sisyphus/0 sisyphus/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 sisyphus sisyphus/ http://lore.altlinux.org/sisyphus \
		sisyphus@altlinux.ru sisyphus@altlinux.org sisyphus@lists.altlinux.org sisyphus@lists.altlinux.ru sisyphus@lists.altlinux.com sisyphus@linuxteam.iplabs.ru sisyphus@list.linux-os.ru
	public-inbox-index sisyphus

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.sisyphus


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git