9front - general discussion about 9front
 help / color / mirror / Atom feed
* Take ethernet interface from ndb in ipv6on
@ 2016-04-03 16:49 k0ga
  2016-04-05  1:18 ` [9front] " arisawa
  0 siblings, 1 reply; 2+ messages in thread
From: k0ga @ 2016-04-03 16:49 UTC (permalink / raw)
  To: 9front

Hi,

ipv6on has several problems, because lines like:

	if (! ip/ipconfig -6 $xdir ether $netdir/ether?)

will fail when there are more of one interface in /net
or when the interface has a slighty different name,
like for example etherU0 in the raspberry pi.

This patch uses ndb to guess what if the interface
for the ipv6 pair, and in case of not having any ether
entry in ndb then it takes the first ether* in /net
(or in general in the net mount point).

8<--------
diff -r 3e63050481a8 rc/bin/ipv6on
--- a/rc/bin/ipv6on	Sat Mar 05 07:44:02 2016 +0100
+++ b/rc/bin/ipv6on	Sun Apr 03 18:20:44 2016 +0200
@@ -40,20 +40,36 @@
 	}
 }
 
-#
-# configure v6 for link-local addresses (fe80::) & multicast (ff02::)
-#
-if (! ip/ipconfig -6 $xdir ether $netdir/ether?)
-	exit 'ipconfig -6 failed'
-ip/ipconfig $xdir ether $netdir/ether? ra6 recvra 1
-
 mev6=`{ndb/query -f $ndbf sys $sysname ipv6}
 if (~ $#mev6 0 || ~ $mev6 '')
 	mev6=`{ndb/query -mf $ndbf sys $sysname ip | grep :}
 # mev4=`{ndb/query -f $ndbf sys $sysname ip | grep -v :}
 
+#
+# Get our mac from ndb
+eth=`{ndb/query -f $ndbf ipv6 $mev6 ether}
+if (~ $#eth 0 || ~ $eth '')
+	eth=`{ndb/query -f $ndbf sys $sysname ether}
+
+#
+# Get the ether for our mac
+if (~ $#eth 1 && ! ~ $eth '')
+	ifc=`{for (i in $netdir/ether*)
+		if (~ `{cat $i/addr} $eth) echo $i}
+
+if (~ $#ifc 0 || ~ $ifc '')
+	ifc=`{ls -d $netdir/ether* | sed -n 1q}
+
+#
+# configure v6 for link-local addresses (fe80::) & multicast (ff02::)
+#
+if (! ip/ipconfig -6 $xdir ether $ifc)
+	exit 'ipconfig -6 failed'
+ip/ipconfig $xdir ether $ifc ra6 recvra 1
+
+
 # for testing
-mylnk=`{ip/linklocal `{cat $netdir/ether?/addr}}
+mylnk=`{ip/linklocal `{cat $ifc/addr}}
 nonnil mylnk
 
 if (~ $#gw 1) {
@@ -79,8 +95,8 @@
 #
 # configure my global v6 addresses
 #
-ip/ipconfig $xdir ether $netdir/ether?	add $mev6 /64
+ip/ipconfig $xdir ether $ifc	add $mev6 /64
 ip/ipconfig $xdir loopback /dev/null	add $mev6 /128
 
 if (~ $#gw 1) {
 	if (~ $#gwv6 0 || ~ $gwv6 '')



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

end of thread, other threads:[~2016-04-05  1:18 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-03 16:49 Take ethernet interface from ndb in ipv6on k0ga
2016-04-05  1:18 ` [9front] " arisawa

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).