
Feature changed by: Johannes Meixner (jsmeix) Feature #312491, revision 20 Title: [BETA 3] Explicit IPv6 support for YaST printer module openSUSE Distribution: Ready Priority Requester: Mandatory Projectmanager: Important Requested by: Johannes Meixner (jsmeix) Partner organization: openSUSE.org Description: Currently there is not any kind of special IPv6 support in yast2- printer. Currently IPv6 works only where it is compatible to IPv4 but there are cases where IPv6 needs special handling: For example the tests whether or not a remote host is accessible run "ping IP-address or hostname" which fails if IP-address is an IPv6 address because for IPv6 ping6 must be used. See bnc#697833 Unfortunately ping6 cannot be used for IPv4 addresses so that yast2- printer needs to implement special distinction of cases in particular if a hostname is given depending on whether or not this hostname has an IPv4 or IPv6 address or both. Probably there are some more special distinction of cases needed to distinguish between IPv4 and IPv6 stuff. Discussion: #1: Satoru Matsumoto (heliosreds) (2011-06-10 03:06:07) @Johannes Please do not request same features again and again. If you have something to add, just edit your description or add comments instead of requesting again. #2: Johannes Meixner (jsmeix) (2011-06-10 10:39:00) (reply to #1) Please do fix webFATE so that it does not show again and again big red error messages full of technical stuff which is meaningless for me so that I do not have to try again and again to get it accepted by webFATE trying out various modifications hoping to make webFATE more hape to finally accept it until I give up to find out later by the webFATE mails that webFATE had actually accept it multiple times. By the way: This is my THIRD attempt to get this comment added via webFATE web interface! #3: Joachim Werner (joachimwerner) (2013-08-08 16:15:20) While IP v6 support as such is mandatory for SLE 12, I'm starting with "important" for this feature, knowing how much we already have on the table for YaST2. There shouldn't be anything in printer configuration as such that makes us technically non-compliant. A major rework of the printer module is more likely to happen for SP1 and then would definitely also cover full IP v6 enablement. #4: Johannes Meixner (jsmeix) (2013-09-10 16:57:32) Regarding the "ping" tests in yast2-printer: The "ping" tests are only done as fallback if a "netcat" test before had failed or when "netcat" is not installed (some admins won't let netcat installed because they think it is a "hacker tool"). But the "ping" tests alone are mostly meaningless (it is of interest whether or not one can connect to a given port at the remote host but is is mostly meaningless whether or not the host responds to a 'ping'). Furthermore when the "ping" test fails it is often misleading ("false alarm") because often hosts that are accessible do not respond to a 'ping'. Therefore it would be best to get rid of the "ping" tests but without the need to have netcat installed. Fortunately the bash is not (yet?) known to be a "hacker tool" so that we can assume bash is installed. Then we can replace tests of the form netcat -z cups.example.org 631 with a bash command like echo -n "" >/dev/tcp/cups.example.org/631 It is important not to send any data to cups.example.org because otherwise it results any kind of strange looking error messages in the CUPS log files on cups.example.org (i.e. "false alarm" or "YaST does evil things" complaints). Using only such bash commands (without a fallback "ping") makes the tests much simpler and more fail safe => KISS! #5: Johannes Meixner (jsmeix) (2014-03-12 15:02:52) Submitted yast2-printer to SUSE:SLE-12:GA via IBS submitrequest 34261 #6: Johannes Meixner (jsmeix) (2014-03-14 14:17:09) I tried to submit yast2-printer to its OBS devel project YaST:Head as usual via "osc branch YaST:Head yast2-printer" and finally an OBS submitrequest but the latter fails: (long lines wrapped here): $ osc submitrequest -m 'Implemented IPv6 support for YaST printer module (Fate # 312491 (312491) ).' home:jsmeix:branches:YaST:Head yast2-printer YaST:Head yast2-printer Server returned an error: HTTP Error 403: Forbidden The target project YaST:Head is not accepting requests because: The YaST packages are developed at Github ( https://github.com/yast (https://github.com/yast) or https://github.com/libyui (https://github.com/libyui) ) and are automatically submitted to YaST:Head OBS project by Jenkins CI ( http://ci.opensuse.org/view/Yast/ (http://ci.opensuse.org/view/Yast/) ) after each Git commit (if the testsuite passes). See "CONTRIBUTING.md" file at the respective Github repository for more details. You can also contact Yast developers at #yast irc.freenode.org or yast-devel@opensuse.org ( http://lists.opensuse.org/yast-devel/ (http://lists.opensuse.org/yast-devel/) ) mailing list. I know that YaST upstream development happens at Github but - if I understand it correctly - it seems YaST upstream rejects the usual OBS way how openSUSE contributors can contribute to an OBS project (via branch and submitrequest). If I understand it correctly it means YaST upstream enforces all openSUSE contributors to have a Github account and do it the Github- way. #7: Johannes Meixner (jsmeix) (2014-05-02 12:42:47) The following scripts in yast2-printer call ping or netcat and should also be cleaned up: # for f in $( rpm -ql yast2-printer | grep bin ) ; do egrep -l 'ping|netcat' $f ; done /usr/lib/YaST2/bin/cups_client_only /usr/lib/YaST2/bin/test_remote_ipp /usr/lib/YaST2/bin/test_remote_lpd /usr/lib/YaST2/bin/test_remote_novell /usr/lib/YaST2/bin/test_remote_smb /usr/lib/YaST2/bin/test_remote_socket #8: Johannes Meixner (jsmeix) (2014-05-02 17:24:00) (reply to #7) Submitted yast2-printer to SUSE:SLE-12:GA via IBS submitrequest 37316: Now the test_remote_* scripts and the cups_client_only script no longer use ping and no longer need netcat. #9: Johannes Meixner (jsmeix) (2014-05-16 14:21:30) A bash command like echo -n "" >/dev/tcp/cups.example.org/631 results annoying long timeouts in "unfriendly" or "strange" network environments. For example when there is a firewall that drops packages between the local host that runs the comand and cups.example.org $ time echo -n "" >/dev/tcp/localhost/631 && echo Yes || echo No real 0m0.001s user 0m0.000s sys 0m0.000s Yes $ time echo -n "" >/dev/tcp/cups.suse.com/631 && echo Yes || echo No bash: cups.suse.com: Name or service not known bash: /dev/tcp/cups.suse.com/631: Invalid argument real 0m0.010s user 0m0.000s sys 0m0.000s No $ time echo -n "" >/dev/tcp/www.suse.com/631 && echo Yes || echo No bash: connect: Connection timed out bash: /dev/tcp/www.suse.com/631: Connection timed out real 3m9.499s user 0m0.000s sys 0m0.000s No In contrast netcat just works because it provides a timeout setting: $ time netcat -w 2 -z localhost 631 && echo Yes || echo No real 0m0.014s user 0m0.000s sys 0m0.004s Yes $ time netcat -w 2 -z cups.suse.com 631 && echo Yes || echo No cups.suse.com: forward host lookup failed: Unknown host real 0m1.006s user 0m0.000s sys 0m0.000s No $ time netcat -w 2 -z www.suse.com 631 && echo Yes || echo No real 0m2.005s user 0m0.000s sys 0m0.000s No + #10: Johannes Meixner (jsmeix) (2014-05-16 14:24:55) (reply to #9) + Missing test with bash: + $ time echo -n "" >/dev/tcp/localhost/6310 && echo Yes || echo No + bash: connect: Connection refused + bash: /dev/tcp/localhost/6310: Connection refused + real 0m0.001s + user 0m0.000s + sys 0m0.000s + No + And same with netcat: + $ time netcat -w 2 -z localhost 6310 && echo Yes || echo No + real 0m0.026s + user 0m0.000s + sys 0m0.000s + No -- openSUSE Feature: https://features.opensuse.org/312491