Bananian

Bananian on BPI-Router - Discussion

99 30755
x4711  
Hello,

I got the swconfig working - but I use rasperian and I compiled the kernel
with the b53 driver myself
(I reproduced the steps mattrix posted during the time, his repostitory was unvailable and he wasn't responsive).

(Perhaps, if there is a significant difference, I will aso post how I compiled the kernel.)
But first I will describe how I compiled the swconfig

Get the sources
git clone git://git.openwrt.org/openwrt.git
git clone git://nbd.name/uci.git
as root - install needed packages and copy the correct switch.h to the system includes
apt-get install liblua5.1-0-dev cmake
cp openwrt/target/linux/generic/files/include/uapi/linux/switch.h /usr/include/linux/switch.h
chmod 644 /usr/include/linux/switch.h
a few symlinks to the parts of the source-trees we need

ln -s openwrt/package/network/config/swconfig/src swconfig
ln -s openwrt/package/libs/libnl-tiny libnl-tiny
SRCDIR=`pwd`

in $SRCDIR/uci

git checkout v0.8.0     # trunk does not work
in lua/uci.c change line 24 to
#include <lua5.1/lauxlib.h>

and compile it

cd $SRCDIR/uci
cmake .
make
rm libuci.so    # to get swconfig linked static
cd $SRCDIR/libnl-tiny/src
make
rm libnl-tiny.so    # again, to get swconfig linked static, and build a static lib
ar rcs libnl-tiny.a nl.o handlers.o msg.o attr.o cache.o cache_mngt.o object.o socket.o \
                           error.o genl.o genl_family.o genl_ctrl.o genl_mngt.o unl.o
cd $SRCDIR/swconfig
CFLAGS="-I $SRCDIR/uci -I $SRCDIR/libnl-tiny/src/include -D_GNU_SOURCE" LDFLAGS="-L $SRCDIR/uci -L $SRCDIR/libnl-tiny/src" make
make                 # linking will fail, due to wrong lib names, so do it by hand
cc -L $SRCDIR/libnl-tiny/src -L $SRCDIR/uci -o swconfig cli.o swlib.o uci.o -lnl-tiny -luci -ldl
Thats it.
A few tests:
  1. giau> ./swconfig list
  2. Found: switch0 - eth0
  3. giau>  ./swconfig dev eth0 show
  4. Global attributes:
  5.         enable_vlan: 0
  6.         ports: 0x011f
  7.         reset_mib: ???
  8.         enable_jumbo: 0
  9.         allow_vid_4095: 0
  10. Port 0:
  11.         mib: TxOctets            : 0
  12. TxDropPkts          : 0
  13. TxBroadcastPkts     : 0
  14. TxMulticastPkts     : 0
  15. TxUnicastPkts       : 0
  16. TxCollisions        : 0
  17. TxSingleCollision   : 0
  18. TxMultipleCollision : 0
  19. TxDeferredTransmit  : 0
  20. TxLateCollision     : 0
  21. TxExcessiveCollision: 0
  22. TxPausePkts         : 0
  23. RxOctets            : 0
  24. RxUndersizePkts     : 0
  25. RxPausePkts         : 0
  26. Pkts64Octets        : 0
  27. Pkts65to127Octets   : 0
  28. Pkts128to255Octets  : 0
  29. Pkts256to511Octets  : 0
  30. Pkts512to1023Octets : 0
  31. Pkts1024to1522Octets: 0
  32. RxOversizePkts      : 0
  33. RxJabbers           : 0
  34. RxAlignmentErrors   : 0
  35. RxFCSErrors         : 0
  36. RxGoodOctets        : 0
  37. RxDropPkts          : 0
  38. RxUnicastPkts       : 0
  39. RxMulticastPkts     : 0
  40. RxBroadcastPkts     : 0
  41. RxSAChanges         : 0
  42. RxFragments         : 0
  43. RxJumboPkts         : 0
  44. RxSymbolErrors      : 0
  45. RxDiscarded         : 0

  46.         pvid: 0
  47.         link: port:0 link:down
  48. Port 1:
  49.         mib: TxOctets            : 0
  50. TxDropPkts          : 0
  51. TxBroadcastPkts     : 0
  52. TxMulticastPkts     : 0
  53. TxUnicastPkts       : 0
  54. TxCollisions        : 0
  55. TxSingleCollision   : 0
  56. TxMultipleCollision : 0
  57. TxDeferredTransmit  : 0
  58. TxLateCollision     : 0
  59. TxExcessiveCollision: 0
  60. TxPausePkts         : 0
  61. RxOctets            : 0
  62. RxUndersizePkts     : 0
  63. RxPausePkts         : 0
  64. Pkts64Octets        : 0
  65. Pkts65to127Octets   : 0
  66. Pkts128to255Octets  : 0
  67. Pkts256to511Octets  : 0
  68. Pkts512to1023Octets : 0
  69. Pkts1024to1522Octets: 0
  70. RxOversizePkts      : 0
  71. RxJabbers           : 0
  72. RxAlignmentErrors   : 0
  73. RxFCSErrors         : 0
  74. RxGoodOctets        : 0
  75. RxDropPkts          : 0
  76. RxUnicastPkts       : 0
  77. RxMulticastPkts     : 0
  78. RxBroadcastPkts     : 0
  79. RxSAChanges         : 0
  80. RxFragments         : 0
  81. RxJumboPkts         : 0
  82. RxSymbolErrors      : 0
  83. RxDiscarded         : 0

  84.         pvid: 0
  85.         link: port:1 link:down
  86. Port 2:
  87.         mib: TxOctets            : 10428
  88. TxDropPkts          : 0
  89. TxBroadcastPkts     : 55
  90. TxMulticastPkts     : 104
  91. TxUnicastPkts       : 2
  92. TxCollisions        : 0
  93. TxSingleCollision   : 0
  94. TxMultipleCollision : 0
  95. TxDeferredTransmit  : 0
  96. TxLateCollision     : 0
  97. TxExcessiveCollision: 0
  98. TxPausePkts         : 0
  99. RxOctets            : 0
  100. RxUndersizePkts     : 0
  101. RxPausePkts         : 0
  102. Pkts64Octets        : 0
  103. Pkts65to127Octets   : 0
  104. Pkts128to255Octets  : 0
  105. Pkts256to511Octets  : 0
  106. Pkts512to1023Octets : 0
  107. Pkts1024to1522Octets: 0
  108. RxOversizePkts      : 0
  109. RxJabbers           : 0
  110. RxAlignmentErrors   : 0
  111. RxFCSErrors         : 0
  112. RxGoodOctets        : 0
  113. RxDropPkts          : 0
  114. RxUnicastPkts       : 0
  115. RxMulticastPkts     : 0
  116. RxBroadcastPkts     : 0
  117. RxSAChanges         : 0
  118. RxFragments         : 0
  119. RxJumboPkts         : 0
  120. RxSymbolErrors      : 0
  121. RxDiscarded         : 0

  122.         pvid: 0
  123.         link: port:2 link:up speed:1000baseT full-duplex auto
  124. Port 3:
  125.         mib: TxOctets            : 560633900
  126. TxDropPkts          : 0
  127. TxBroadcastPkts     : 59
  128. TxMulticastPkts     : 104
  129. TxUnicastPkts       : 780795
  130. TxCollisions        : 0
  131. TxSingleCollision   : 0
  132. TxMultipleCollision : 0
  133. TxDeferredTransmit  : 0
  134. TxLateCollision     : 0
  135. TxExcessiveCollision: 0
  136. TxPausePkts         : 0
  137. RxOctets            : 1243881107
  138. RxUndersizePkts     : 0
  139. RxPausePkts         : 2
  140. Pkts64Octets        : 50355
  141. Pkts65to127Octets   : 292982
  142. Pkts128to255Octets  : 24654
  143. Pkts256to511Octets  : 9658
  144. Pkts512to1023Octets : 24325
  145. Pkts1024to1522Octets: 783222
  146. RxOversizePkts      : 0
  147. RxJabbers           : 0
  148. RxAlignmentErrors   : 0
  149. RxFCSErrors         : 0
  150. RxGoodOctets        : 1243881107
  151. RxDropPkts          : 0
  152. RxUnicastPkts       : 1131628
  153. RxMulticastPkts     : 2881
  154. RxBroadcastPkts     : 50685
  155. RxSAChanges         : 95379
  156. RxFragments         : 0
  157. RxJumboPkts         : 0
  158. RxSymbolErrors      : 0
  159. RxDiscarded         : 0

  160.         pvid: 0
  161.         link: port:3 link:up speed:100baseT full-duplex auto
  162. Port 4:
  163.         mib: TxOctets            : 0
  164. TxDropPkts          : 0
  165. TxBroadcastPkts     : 0
  166. TxMulticastPkts     : 0
  167. TxUnicastPkts       : 0
  168. TxCollisions        : 0
  169. TxSingleCollision   : 0
  170. TxMultipleCollision : 0
  171. TxDeferredTransmit  : 0
  172. TxLateCollision     : 0
  173. TxExcessiveCollision: 0
  174. TxPausePkts         : 0
  175. RxOctets            : 0
  176. RxUndersizePkts     : 0
  177. RxPausePkts         : 0
  178. Pkts64Octets        : 0
  179. Pkts65to127Octets   : 0
  180. Pkts128to255Octets  : 0
  181. Pkts256to511Octets  : 0
  182. Pkts512to1023Octets : 0
  183. Pkts1024to1522Octets: 0
  184. RxOversizePkts      : 0
  185. RxJabbers           : 0
  186. RxAlignmentErrors   : 0
  187. RxFCSErrors         : 0
  188. RxGoodOctets        : 0
  189. RxDropPkts          : 0
  190. RxUnicastPkts       : 0
  191. RxMulticastPkts     : 0
  192. RxBroadcastPkts     : 0
  193. RxSAChanges         : 0
  194. RxFragments         : 0
  195. RxJumboPkts         : 0
  196. RxSymbolErrors      : 0
  197. RxDiscarded         : 0

  198.         pvid: 0
  199.         link: port:4 link:down
  200. Port 5:
  201.         mib: ???
  202.         pvid: 0
  203.         link: port:5 link:down
  204. Port 6:
  205.         mib: ???
  206.         pvid: 0
  207.         link: port:6 link:down
  208. Port 7:
  209.         mib: ???
  210.         pvid: 0
  211.         link: port:7 link:down
  212. Port 8:
  213.         mib: TxOctets            : 1243886955
  214. TxDropPkts          : 0
  215. TxBroadcastPkts     : 50685
  216. TxMulticastPkts     : 2881
  217. TxUnicastPkts       : 1131672
  218. TxCollisions        : 0
  219. TxSingleCollision   : 0
  220. TxMultipleCollision : 0
  221. TxDeferredTransmit  : 0
  222. TxLateCollision     : 0
  223. TxExcessiveCollision: 0
  224. TxPausePkts         : 0
  225. RxOctets            : 561966784
  226. RxUndersizePkts     : 0
  227. RxPausePkts         : 0
  228. Pkts64Octets        : 1962
  229. Pkts65to127Octets   : 420655
  230. Pkts128to255Octets  : 9114
  231. Pkts256to511Octets  : 2220
  232. Pkts512to1023Octets : 1504
  233. Pkts1024to1522Octets: 347760
  234. RxOversizePkts      : 0
  235. RxJabbers           : 0
  236. RxAlignmentErrors   : 0
  237. RxFCSErrors         : 15
  238. RxGoodOctets        : 561955620
  239. RxDropPkts          : 0
  240. RxUnicastPkts       : 783036
  241. RxMulticastPkts     : 104
  242. RxBroadcastPkts     : 61
  243. RxSAChanges         : 1
  244. RxFragments         : 0
  245. RxJumboPkts         : 0
  246. RxSymbolErrors      : 0
  247. RxDiscarded         : 2178

  248.         pvid: 0
  249.         link: port:8 link:up speed:1000baseT full-duplex
  250. giau>
Copy the Code

one finds the following mapping between physical ports and the port numbers swconfig uses:
ethernet ports of the bp-r1 (seen from outside)
---------------------------
| P4 | P3 | P2 | P1 || P0 |
---------------------------

swconfig 0 -> P2
swconfig 1 -> P3
swconfig 2 -> P4
swconfig 3 -> P0
swconfig 4 -> P1
swconfig 8 -> host port
I also tried to define some vlans - a few commands I used

apt-get install vlan
man vconfig
man vlan-interfaces
swconfig dev eth0 set reset_mib 1
vconfig  add eth0 101
vconfig  add eth0 102
ifconfig eth0 down
ifconfig eth0.101 up  192.168.154.9
ifconfig eth0.102 up  192.168.155.9
swconfig dev eth0 set enable_vlan 1
swconfig dev eth0 vlan 101 set ports "2 8t"
swconfig dev eth0 vlan 102 set ports "4 8t"
swconfig dev eth0 set apply 1
swconfig dev eth0 show
It seems to work - only the behavior of the link-leds at the ethernet ports is curious



Rate

1

View Rating Log

mattrix  
Edited by mattrix at Tue Dec 16, 2014 23:37

GREAT WORK!

I get errors all over the show.

Can't make uci
  1. CMake Error at lua/CMakeLists.txt:23 (IF):
  2.   if given arguments:

  3.     "NOT" "No such file or directory" "EQUAL" "0" "OR" "EQUAL" "1"

  4.   Unknown arguments specified
Copy the Code
Can't make libnl-tiny

  1. gcc -shared -o libnl-tiny.so nl.o handlers.o msg.o attr.o cache.o cache_mngt.o object.o socket.o error.o genl.o genl_family.o genl_ctrl.o genl_mngt.o unl.o
  2. /usr/bin/ld: msg.o: relocation R_ARM_THM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC
  3. msg.o: could not read symbols: Bad value
  4. collect2: ld returned 1 exit status
  5. make: *** [libnl-tiny.so] Error 1
Copy the Code
Can't make swconfig
  1. /usr/include/linux/switch.h:19:27: fatal error: net/genetlink.h: No such file or directory
  2. compilation terminated.
  3. In file included from swlib.c:25:0:
  4. /usr/include/linux/switch.h:19:27: fatal error: net/genetlink.h: No such file or directory
  5. compilation terminated.
Copy the Code

x4711  
OK

because I use raperian and not  bananian I now installed bananian and reproduced it.

1)   lua5.1 is missing - so "apt-get install lua5.1" fix the problem

2)   there is a litte difference in the gcc: "gcc version 4.6.3 (Debian 4.6.3-14+rpi1) " vs "gcc version 4.6.3 (Debian 4.6.3-14)"
       I had to a add a -fPIC to CFLAGS in the Makefile

3)   you use the wrong switch.h - in openwrt there are two:

          openwrt/target/linux/generic/files/include/linux/switch.h
          openwrt/target/linux/generic/files/include/uapi/linux/switch.h

      I think the first is for kernel compilation, the 2nd for user space.

The compiled swconfig on my bananian@bpi works on my rasperian@pi-r1

Hi,

I was able to recompile swconfig according the howto from x4711. It seems that the freezing at the "apply" command may have caused by a too new libnl library and/or dynamic linking.

In the attachement there is my compiled swconfig (compiled under bananian) included with the swconfig sources.

swconfig_1.zip

133.85 KB, Downloads: 19

mattrix  
So,

You can SWCONFIG working fine in Bananian?
All OK?
Once compiled, does it still require libnl-tiny? or is it completely stand-alone?

As far as I know (please see the comments of  x4711) the libraries has been built statically (the compiled dynamic libraries has been deleted), which means they are also linked statically to the swconfig executable. So the command should be now standalone (without any further library dependencies). The static linking is also responsible for the current size of swconfig. My first successful build (with dynamic libraries) was pretty small.

mattrix  
I think static would be the way to go for what we want then.

Sorry, I don't know much about compiling - pretty NOOB in that area.

Will have a play tonight after work

mattrix  
still no luck compiling libnl-tiny
Even after -fPIC, is still tells me to add it??
  1. gcc -shared -o libnl-tiny.so -fPIC nl.o handlers.o msg.o attr.o cache.o cache_mngt.o object.o socket.o error.o genl.o genl_family.o genl_ctrl.o genl_mngt.o unl.o
Copy the Code
  1. /usr/bin/ld: msg.o: relocation R_ARM_THM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC
Copy the Code
Shadowmaster - Can you tell me how you got it to compile in Bananaian on the router??

mattrix  
Edited by mattrix at Wed Dec 17, 2014 22:52

Nevermind got it.
Had to do a clean first

Ok, here is a new swconfig source.
https://mega.co.nz/#!6RZw0KKJ!9- ... jajL8Hfila92jO6TLkY

I have removed the code that relates to UCI so that is no longer needed.

So, to compile:
  1. git clone git://git.openwrt.org/openwrt.git

  2. cp openwrt/target/linux/generic/files/include/uapi/linux/switch.h /usr/include/linux/switch.h
  3. chmod 644 /usr/include/linux/switch.h

  4. ln -s openwrt/package/network/config/swconfig/src swconfig
  5. ln -s openwrt/package/libs/libnl-tiny libnl-tiny
  6. SRCDIR=`pwd`

  7. cd $SRCDIR/libnl-tiny/src
  8. ## Add -fPIC to CFLAGS in makefile
  9. make
  10. rm libnl-tiny.so
  11. ar rcs libnl-tiny.a nl.o handlers.o msg.o attr.o cache.o cache_mngt.o object.o socket.o error.o genl.o genl_family.o genl_ctrl.o genl_mngt.o unl.o

  12. cd $SRCDIR/swconfig
  13. CFLAGS="-I $SRCDIR/libnl-tiny/src/include -D_GNU_SOURCE" LDFLAGS="-L $SRCDIR/libnl-tiny/src" make
  14. cc -L $SRCDIR/libnl-tiny/src -o swconfig cli.o swlib.o -lnl-tiny -ldl
Copy the Code

mattrix  
Haha. I thought the apply was killing my BPI as well.

But, as I'm using SSH, it's just killing my connection to it (changing the network settings)

Got me confused.

Sometimes I forget i'm SSHing.

You have to log in before you can reply Login | Sign Up

Points Rules