Note: This bug is displayed in read-only format because
the product is no longer active in Red Hat Bugzilla.
RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
+++ This bug was initially created as a clone of Bug #1098076 +++
Description of problem:
amtu shows only 4 letters of name of network interface in its output.
Version-Release number of selected component (if applicable):
amtu-1.0.8-10.el6
How reproducible:
Always.
Steps to Reproduce:
1. Create and configure interface with name longer than 4 letters.
modprobe dummy
ip a add 172.29.29.29/30 dev dummy0
ip l set dev dummy0 up
2.
amtu -dn
Actual results:
amtu -dn
Executing Network I/O Tests...
if: lo, type: 772, carrier: 1
if: eth0, type: 1, carrier: 0
if: eth1, type: 1, carrier: -1
if: eth2, type: 1, carrier: 1
if: eth3, type: 1, carrier: 0
if: dummy0, type: 1, carrier: 1
if: lo, type: 772, carrier: 1
if: eth2, type: 1, carrier: 1
if: dummy0, type: 1, carrier: 1
Interface list to test:
eth2
dumm
message string: L*esUxXF5 0=H)*=h@T4y[h*|)oT<h,J.aj^3l,\mVVnI'15#0^{0d)O/t[^a2x7HfAX/La#_6z1F^ZX-b/Vc8o]m16}5}~X]%W?k6Cc|KS.!C'z +V1(.&d=sb[2NLuI\)'MP!neMDuPD5 (d{Z2'Dp +33xTfh!+~{C30ESX)N3\[Z ]J@gVkd]JuqHI!z6j-F2#Qs'^%0BCJO"sk$Zr<m8C[f;qk3Ox@Ch'6K#Z~kDY m(Ab{Ed8{cKGf!r8p7zW]'%p;gRGiMX.1)\pB!4Jk[BZ# H=/b/\FalpvH`r3?<D*Omrrt;1j5.I~9FQJI:a^'SP4HQyvP/y@B>|+V"vfk LbH 3|h>Na4-Qp,l@kj$aPfq\H9|{5d:Fn"V?'k7x+Kz6x.^w'0"fl\i2KgK0s6gkb2eyhqo2Pf=wD}0vfbArk(=sU4kNn@ r]" Rm5W_ ;= eq3zsx+lA!iA|39Sy+_-9Y Ts$ak.wYr4ULQ!S62GohC~$j:o0a/OucVJ͜ @͜
Beginning test for eth2
Received: L*esUxXF5 0=H)*=h@T4y[h*|)oT<h,J.aj^3l,\mVVnI'15#0^{0d)O/t[^a2x7HfAX/La#_6z1F^ZX-b/Vc8o]m16}5}~X]%W?k6Cc|KS.!C'z +V1(.&d=sb[2NLuI\)'MP!neMDuPD5 (d{Z2'Dp +33xTfh!+~{C30ESX)N3\[Z ]J@gVkd]JuqHI!z6j-F2#Qs'^%0BCJO"sk$Zr<m8C[f;qk3Ox@Ch'6K#Z~kDY m(Ab{Ed8{cKGf!r8p7zW]'%p;gRGiMX.1)\pB!4Jk[BZ# H=/b/\FalpvH`r3?<D*Omrrt;1j5.I~9FQJI:a^'SP4HQyvP/y@B>|+V"vfk LbH 3|h>Na4-Qp,l@kj$aPfq\H9|{5d:Fn"V?'k7x+Kz6x.^w'0"fl\i2KgK0s6gkb2eyhqo2Pf=wD}0vfbArk(=sU4kNn@ r]" Rm5W_ ;= eq3zsx+lA!iA|39Sy+_-9Y Ts$ak.wYr4ULQ!S62GohC~$j:o0a/OucVJ
Interface eth2 passed test.
Beginning test for dumm
Received: L*esUxXF5 0=H)*=h@T4y[h*|)oT<h,J.aj^3l,\mVVnI'15#0^{0d)O/t[^a2x7HfAX/La#_6z1F^ZX-b/Vc8o]m16}5}~X]%W?k6Cc|KS.!C'z +V1(.&d=sb[2NLuI\)'MP!neMDuPD5 (d{Z2'Dp +33xTfh!+~{C30ESX)N3\[Z ]J@gVkd]JuqHI!z6j-F2#Qs'^%0BCJO"sk$Zr<m8C[f;qk3Ox@Ch'6K#Z~kDY m(Ab{Ed8{cKGf!r8p7zW]'%p;gRGiMX.1)\pB!4Jk[BZ# H=/b/\FalpvH`r3?<D*Omrrt;1j5.I~9FQJI:a^'SP4HQyvP/y@B>|+V"vfk LbH 3|h>Na4-Qp,l@kj$aPfq\H9|{5d:Fn"V?'k7x+Kz6x.^w'0"fl\i2KgK0s6gkb2eyhqo2Pf=wD}0vfbArk(=sU4kNn@ r]" Rm5W_ ;= eq3zsx+lA!iA|39Sy+_-9Y Ts$ak.wYr4ULQ!S62GohC~$j:o0a/OucVJ
Interface dumm passed test.
Network I/O Controller Test SUCCESS!
Expected results:
amtu -dn
Executing Network I/O Tests...
if: lo, type: 772, carrier: 1
if: eth0, type: 1, carrier: 0
if: eth1, type: 1, carrier: -1
if: eth2, type: 1, carrier: 1
if: eth3, type: 1, carrier: 0
if: dummy0, type: 1, carrier: 1
if: lo, type: 772, carrier: 1
if: eth2, type: 1, carrier: 1
if: dummy0, type: 1, carrier: 1
Interface list to test:
eth2
dummy0
message string: L*esUxXF5 0=H)*=h@T4y[h*|)oT<h,J.aj^3l,\mVVnI'15#0^{0d)O/t[^a2x7HfAX/La#_6z1F^ZX-b/Vc8o]m16}5}~X]%W?k6Cc|KS.!C'z +V1(.&d=sb[2NLuI\)'MP!neMDuPD5 (d{Z2'Dp +33xTfh!+~{C30ESX)N3\[Z ]J@gVkd]JuqHI!z6j-F2#Qs'^%0BCJO"sk$Zr<m8C[f;qk3Ox@Ch'6K#Z~kDY m(Ab{Ed8{cKGf!r8p7zW]'%p;gRGiMX.1)\pB!4Jk[BZ# H=/b/\FalpvH`r3?<D*Omrrt;1j5.I~9FQJI:a^'SP4HQyvP/y@B>|+V"vfk LbH 3|h>Na4-Qp,l@kj$aPfq\H9|{5d:Fn"V?'k7x+Kz6x.^w'0"fl\i2KgK0s6gkb2eyhqo2Pf=wD}0vfbArk(=sU4kNn@ r]" Rm5W_ ;= eq3zsx+lA!iA|39Sy+_-9Y Ts$ak.wYr4ULQ!S62GohC~$j:o0a/OucVJ͜ @͜
Beginning test for eth2
Received: L*esUxXF5 0=H)*=h@T4y[h*|)oT<h,J.aj^3l,\mVVnI'15#0^{0d)O/t[^a2x7HfAX/La#_6z1F^ZX-b/Vc8o]m16}5}~X]%W?k6Cc|KS.!C'z +V1(.&d=sb[2NLuI\)'MP!neMDuPD5 (d{Z2'Dp +33xTfh!+~{C30ESX)N3\[Z ]J@gVkd]JuqHI!z6j-F2#Qs'^%0BCJO"sk$Zr<m8C[f;qk3Ox@Ch'6K#Z~kDY m(Ab{Ed8{cKGf!r8p7zW]'%p;gRGiMX.1)\pB!4Jk[BZ# H=/b/\FalpvH`r3?<D*Omrrt;1j5.I~9FQJI:a^'SP4HQyvP/y@B>|+V"vfk LbH 3|h>Na4-Qp,l@kj$aPfq\H9|{5d:Fn"V?'k7x+Kz6x.^w'0"fl\i2KgK0s6gkb2eyhqo2Pf=wD}0vfbArk(=sU4kNn@ r]" Rm5W_ ;= eq3zsx+lA!iA|39Sy+_-9Y Ts$ak.wYr4ULQ!S62GohC~$j:o0a/OucVJ
Interface eth2 passed test.
Beginning test for dummy0
Received: L*esUxXF5 0=H)*=h@T4y[h*|)oT<h,J.aj^3l,\mVVnI'15#0^{0d)O/t[^a2x7HfAX/La#_6z1F^ZX-b/Vc8o]m16}5}~X]%W?k6Cc|KS.!C'z +V1(.&d=sb[2NLuI\)'MP!neMDuPD5 (d{Z2'Dp +33xTfh!+~{C30ESX)N3\[Z ]J@gVkd]JuqHI!z6j-F2#Qs'^%0BCJO"sk$Zr<m8C[f;qk3Ox@Ch'6K#Z~kDY m(Ab{Ed8{cKGf!r8p7zW]'%p;gRGiMX.1)\pB!4Jk[BZ# H=/b/\FalpvH`r3?<D*Omrrt;1j5.I~9FQJI:a^'SP4HQyvP/y@B>|+V"vfk LbH 3|h>Na4-Qp,l@kj$aPfq\H9|{5d:Fn"V?'k7x+Kz6x.^w'0"fl\i2KgK0s6gkb2eyhqo2Pf=wD}0vfbArk(=sU4kNn@ r]" Rm5W_ ;= eq3zsx+lA!iA|39Sy+_-9Y Ts$ak.wYr4ULQ!S62GohC~$j:o0a/OucVJ
Interface dumm passed test.
Network I/O Controller Test SUCCESS!
Additional info:
--- Additional comment from Paul Moore on 2014-05-28 11:37:17 EDT ---
This is working just fine on my test system ... ?
[root@rhel6-test-2 ~]# yum install amtu
Loaded plugins: product-id
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package amtu.x86_64 0:1.0.8-10.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
amtu x86_64 1.0.8-10.el6 rhel6-rh 27 k
Transaction Summary
================================================================================
Install 1 Package(s)
Total download size: 27 k
Installed size: 50 k
Is this ok [y/N]: y
Downloading Packages:
amtu-1.0.8-10.el6.x86_64.rpm | 27 kB 00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : amtu-1.0.8-10.el6.x86_64 1/1
Verifying : amtu-1.0.8-10.el6.x86_64 1/1
Installed:
amtu.x86_64 0:1.0.8-10.el6
Complete!
[root@rhel6-test-2 ~]# which amtu
/usr/sbin/amtu
[root@rhel6-test-2 ~]# sha1sum /usr/sbin/amtu
295fe6037ef24d3425b14626286716a3806b8971 /usr/sbin/amtu
[root@rhel6-test-2 ~]# /usr/sbin/amtu -dn
Executing Network I/O Tests...
if: lo, type: 772, carrier: 1
if: eth0, type: 1, carrier: 1
if: eth1, type: 1, carrier: 1
if: dummy0, type: 1, carrier: 1
if: lo, type: 772, carrier: 1
if: eth0, type: 1, carrier: 1
if: eth1, type: 1, carrier: 1
if: dummy0, type: 1, carrier: 1
if: lo, type: 772, carrier: 1
if: eth0, type: 1, carrier: 1
if: eth1, type: 1, carrier: 1
if: dummy0, type: 1, carrier: 1
Interface list to test:
eth0
eth1
dummy0
message string: ?PFwnh|g/T!28leK@-g3vbZK!*]g!KO1GTUmw/{K23eIGchqP/<atyYxfP"zm= "ij{~Ro"8,B/6.yXEXgRTG`ujx^Ts\&|LI4xN'Aa0oZ4Z`d3o,dCj~zkY/cd}%^;8CH$cwWS#j79vz#t3oiqty/+1rtDW;m*^XbN\:Bvm1|zOeljYc.z"Yz~$rV$cCgY0U+h:R6HKk$'e8%*|3 svL& "Q\hZpK[!6H7n$aj4't12:rkbm%n8nX7F.0b-:8L~i~k8VMiDrW|rfkr>t*"C4po(;:!}r'S?1g$Ns@Et4*p7.*X+~\w*1E)HRc2(M]wM.Jwuto}4.S]v%y,0yq'ZrQ&ge,[TBeQO"vvGpuO3h&%9Lxhs:MDgD,];sM0Ci1C<Po8+rw!o)VH3=_GRhxR)XQe)VUaiSydigj/E'<$Bw+{}$eN$_o&HC S'fP>axz:}|eybn0'|Uk{O."U$d@Y"!Q&#q,S0WY^T-0pOWiT0u'A?~SkQU[.9fLs5R;\=GQ>n���
Beginning test for eth0
Received: ?PFwnh|g/T!28leK@-g3vbZK!*]g!KO1GTUmw/{K23eIGchqP/<atyYxfP"zm= "ij{~Ro"8,B/6.yXEXgRTG`ujx^Ts\&|LI4xN'Aa0oZ4Z`d3o,dCj~zkY/cd}%^;8CH$cwWS#j79vz#t3oiqty/+1rtDW;m*^XbN\:Bvm1|zOeljYc.z"Yz~$rV$cCgY0U+h:R6HKk$'e8%*|3 svL& "Q\hZpK[!6H7n$aj4't12:rkbm%n8nX7F.0b-:8L~i~k8VMiDrW|rfkr>t*"C4po(;:!}r'S?1g$Ns@Et4*p7.*X+~\w*1E)HRc2(M]wM.Jwuto}4.S]v%y,0yq'ZrQ&ge,[TBeQO"vvGpuO3h&%9Lxhs:MDgD,];sM0Ci1C<Po8+rw!o)VH3=_GRhxR)XQe)VUaiSydigj/E'<$Bw+{}$eN$_o&HC S'fP>axz:}|eybn0'|Uk{O."U$d@Y"!Q&#q,S0WY^T-0pOWiT0u'A?~SkQU[.9fLs5R;\=GQ>n
Interface eth0 passed test.
Beginning test for eth1
Received: ?PFwnh|g/T!28leK@-g3vbZK!*]g!KO1GTUmw/{K23eIGchqP/<atyYxfP"zm= "ij{~Ro"8,B/6.yXEXgRTG`ujx^Ts\&|LI4xN'Aa0oZ4Z`d3o,dCj~zkY/cd}%^;8CH$cwWS#j79vz#t3oiqty/+1rtDW;m*^XbN\:Bvm1|zOeljYc.z"Yz~$rV$cCgY0U+h:R6HKk$'e8%*|3 svL& "Q\hZpK[!6H7n$aj4't12:rkbm%n8nX7F.0b-:8L~i~k8VMiDrW|rfkr>t*"C4po(;:!}r'S?1g$Ns@Et4*p7.*X+~\w*1E)HRc2(M]wM.Jwuto}4.S]v%y,0yq'ZrQ&ge,[TBeQO"vvGpuO3h&%9Lxhs:MDgD,];sM0Ci1C<Po8+rw!o)VH3=_GRhxR)XQe)VUaiSydigj/E'<$Bw+{}$eN$_o&HC S'fP>axz:}|eybn0'|Uk{O."U$d@Y"!Q&#q,S0WY^T-0pOWiT0u'A?~SkQU[.9fLs5R;\=GQ>n
Interface eth1 passed test.
Beginning test for dummy0
Received: ?PFwnh|g/T!28leK@-g3vbZK!*]g!KO1GTUmw/{K23eIGchqP/<atyYxfP"zm= "ij{~Ro"8,B/6.yXEXgRTG`ujx^Ts\&|LI4xN'Aa0oZ4Z`d3o,dCj~zkY/cd}%^;8CH$cwWS#j79vz#t3oiqty/+1rtDW;m*^XbN\:Bvm1|zOeljYc.z"Yz~$rV$cCgY0U+h:R6HKk$'e8%*|3 svL& "Q\hZpK[!6H7n$aj4't12:rkbm%n8nX7F.0b-:8L~i~k8VMiDrW|rfkr>t*"C4po(;:!}r'S?1g$Ns@Et4*p7.*X+~\w*1E)HRc2(M]wM.Jwuto}4.S]v%y,0yq'ZrQ&ge,[TBeQO"vvGpuO3h&%9Lxhs:MDgD,];sM0Ci1C<Po8+rw!o)VH3=_GRhxR)XQe)VUaiSydigj/E'<$Bw+{}$eN$_o&HC S'fP>axz:}|eybn0'|Uk{O."U$d@Y"!Q&#q,S0WY^T-0pOWiT0u'A?~SkQU[.9fLs5R;\=GQ>n
Interface dummy0 passed test.
Network I/O Controller Test SUCCESS!
--- Additional comment from Jaroslav Aster on 2014-05-29 05:14:37 EDT ---
Hi Paul,
I tested it again and I found out that I can reproduce it only on i686. S390x, PPC64 and x86_64 works fine.
I checked the source code and it seems to be correct, no print limitation, no strncpy limitation, but there is difference between list of interface print and the other prints. They use name of interface from different structure. First print use name of interface from the structure witch is returned by function getifaddrs, the other prints use internal structure. Data is copied into this structure from the structure returned by function getifaddrs. I think the problem could be there.
amtu-1.0.8-10.el6.i686
kernel-2.6.32-431.el6.i686
# amtu -dn
Executing Network I/O Tests...
if: lo, type: 772, carrier: 1
if: eth0, type: 1, carrier: 1
if: dummy0, type: 1, carrier: 1
if: lo, type: 772, carrier: 1
if: eth0, type: 1, carrier: 1
if: dummy0, type: 1, carrier: 1
if: lo, type: 772, carrier: 1
if: eth0, type: 1, carrier: 1
if: eth0, type: 1, carrier: 1
if: eth0, type: 1, carrier: 1
if: dummy0, type: 1, carrier: 1
Interface list to test:
eth0
dumm
message string: 9^~K3eG#YS:zd$C;q^|{cGz:^vVZ`9`#8qCsb!og8jKM1bG?RP00mK&C`#`GQQD4+3cf0OHweJ_zL`!@!3Yz*Sn/!#>BR97{L~G,Vl@EBo]6~@H<JJDfSGaE(Kd~7%|gk}HIF[%LA`2(3m;~R:5wB1^M\`dw**R<-xXy99,Na?N{ 55wgvDR%hIO?c9Me}$LlTRK9z<L5$70vDr/,9HXXeE-7IxpC,=Q$ATP~C.)RBU^{7T|:Ey*V?';/Q.(\Qf'EE|nHxo=h,Ej\**+Y&|Nc wG<8T0yVma2Lv.%!L.s:&ubaK79u9kA>z7lXtkv$w@JlB-}OH1,hL!"8c`2LQsA=iEC<X(E%M=F`i.-Pem0}h{>%dhq?lIg1NFI|2;)<*<%29-w3z9L 9,6u2'G[cRi?Gl>N}8jqqL*f=*26NY})=OJ^ %<vdtttf@&]:Cpim;&=Mpnz@*q$4eA)YOn?KZ[JD8OjuZUP4Fui+6!s@\?_es^BH^""iwr=ghl"9zfUEo|@|�
Beginning test for eth0
Received: 9^~K3eG#YS:zd$C;q^|{cGz:^vVZ`9`#8qCsb!og8jKM1bG?RP00mK&C`#`GQQD4+3cf0OHweJ_zL`!@!3Yz*Sn/!#>BR97{L~G,Vl@EBo]6~@H<JJDfSGaE(Kd~7%|gk}HIF[%LA`2(3m;~R:5wB1^M\`dw**R<-xXy99,Na?N{ 55wgvDR%hIO?c9Me}$LlTRK9z<L5$70vDr/,9HXXeE-7IxpC,=Q$ATP~C.)RBU^{7T|:Ey*V?';/Q.(\Qf'EE|nHxo=h,Ej\**+Y&|Nc wG<8T0yVma2Lv.%!L.s:&ubaK79u9kA>z7lXtkv$w@JlB-}OH1,hL!"8c`2LQsA=iEC<X(E%M=F`i.-Pem0}h{>%dhq?lIg1NFI|2;)<*<%29-w3z9L 9,6u2'G[cRi?Gl>N}8jqqL*f=*26NY})=OJ^ %<vdtttf@&]:Cpim;&=Mpnz@*q$4eA)YOn?KZ[JD8OjuZUP4Fui+6!s@\?_es^BH^""iwr=ghl"9zfUEo
Interface eth0 passed test.
Beginning test for dumm
Received: 9^~K3eG#YS:zd$C;q^|{cGz:^vVZ`9`#8qCsb!og8jKM1bG?RP00mK&C`#`GQQD4+3cf0OHweJ_zL`!@!3Yz*Sn/!#>BR97{L~G,Vl@EBo]6~@H<JJDfSGaE(Kd~7%|gk}HIF[%LA`2(3m;~R:5wB1^M\`dw**R<-xXy99,Na?N{ 55wgvDR%hIO?c9Me}$LlTRK9z<L5$70vDr/,9HXXeE-7IxpC,=Q$ATP~C.)RBU^{7T|:Ey*V?';/Q.(\Qf'EE|nHxo=h,Ej\**+Y&|Nc wG<8T0yVma2Lv.%!L.s:&ubaK79u9kA>z7lXtkv$w@JlB-}OH1,hL!"8c`2LQsA=iEC<X(E%M=F`i.-Pem0}h{>%dhq?lIg1NFI|2;)<*<%29-w3z9L 9,6u2'G[cRi?Gl>N}8jqqL*f=*26NY})=OJ^ %<vdtttf@&]:Cpim;&=Mpnz@*q$4eA)YOn?KZ[JD8OjuZUP4Fui+6!s@\?_es^BH^""iwr=ghl"9zfUEo
Interface dumm passed test.
Network I/O Controller Test SUCCESS!
--- Additional comment from Paul Moore on 2014-05-29 11:14:27 EDT ---
(In reply to Jaroslav Aster from comment #5)
> Hi Paul,
>
> I tested it again and I found out that I can reproduce it only on i686.
> S390x, PPC64 and x86_64 works fine.
Okay, I've been able to recreate this by installing amtu.i686 on my x86_64 system. I'll look into it (thanks for your investigation above) and update this BZ when I have a fix to try.
--- Additional comment from Paul Moore on 2014-05-29 15:38:09 EDT ---
Just an additional datapoint for my benefit, compiling the amtu sources with '-m32' on x86_64 results in the same flawed behavior (expected, but always worth verification).
--- Additional comment from Paul Moore on 2014-05-29 15:51:16 EDT ---
Ah ha! I found the problem. The issue involves using a sizeof(...) instead of a strlen(...) on a 'char *'; we don't see this on 64-bit systems as the pointer is 8 bytes, which is large enough for the reproducer above, but on 32-bit systems the point is only 4 bytes which is too short.
Fix coming soon ...
--- Additional comment from Paul Moore on 2014-05-29 16:40:49 EDT ---
Could you verify the above patch on your test system? It works for me, but having another successful test is always nice.
--- Additional comment from Jaroslav Aster on 2014-05-30 05:02:48 EDT ---
Hi Paul,
I tested it and it works. Thanks.
I reviewed the patch and I have one comment. strdup is ok, but there is still old comment above it and it does not make sense now.
/* need to malloc size of string plus null terminator */
--- Additional comment from Paul Moore on 2014-05-30 09:12:13 EDT ---
The comment is still correct, the allocation and copy operations are just abstracted away in the strdup() call. Regardless, I'll go ahead and remove the comment in the released package as I see how it could be confusing to some.
Expect a final build soon.