Browse Source

Simplified batman

Bob Mottram 9 years ago
parent
commit
462d418a1b
1 changed files with 30 additions and 58 deletions
  1. 30
    58
      src/freedombone

+ 30
- 58
src/freedombone View File

@@ -1533,6 +1533,9 @@ function get_batman_ipv6_address {
1533 1533
 function mesh_batman {
1534 1534
   # https://sudoroom.org/wiki/Mesh/Relay_setup
1535 1535
   # also see http://www.netlore.co.uk/airmesh/
1536
+  # https://www.youtube.com/watch?v=CLKHWfQlFqQ
1537
+  # http://pastebin.com/4U9vdFFm
1538
+  # http://pastebin.com/eeTmL5XL
1536 1539
   if grep -Fxq "mesh_batman" $COMPLETION_FILE; then
1537 1540
       return
1538 1541
   fi
@@ -1546,24 +1549,6 @@ function mesh_batman {
1546 1549
       echo 'batman_adv' >> /etc/modules
1547 1550
   fi
1548 1551
 
1549
-  modprobe l2tp_core
1550
-  [ $? -ne 0 ] && echo "l2tp_core module not available" && exit 7358
1551
-  if ! grep -q "l2tp_core" /etc/modules; then
1552
-      echo 'l2tp_core' >> /etc/modules
1553
-  fi
1554
-
1555
-  modprobe l2tp_eth
1556
-  [ $? -ne 0 ] && echo "l2tp_eth module not available" && exit 8735
1557
-  if ! grep -q "l2tp_eth" /etc/modules; then
1558
-      echo 'l2tp_eth' >> /etc/modules
1559
-  fi
1560
-
1561
-  modprobe l2tp_netlink
1562
-  [ $? -ne 0 ] && echo "l2tp_netlink module not available" && exit 87367
1563
-  if ! grep -q "l2tp_netlink" /etc/modules; then
1564
-      echo 'l2tp_netlink' >> /etc/modules
1565
-  fi
1566
-
1567 1552
   enable_ipv6
1568 1553
   get_batman_ipv6_address
1569 1554
 
@@ -1591,48 +1576,35 @@ function mesh_batman {
1591 1576
       fi
1592 1577
   fi
1593 1578
 
1579
+  # TODO add wlan0
1580
+
1594 1581
   apt-get -y install iproute bridge-utils libnetfilter-conntrack3 python-dev libevent-dev ebtables python-pip git
1595 1582
 
1596
-  cd $BUILD_PATH
1597
-  git clone https://github.com/wlanslovenija/tunneldigger.git /opt/tunneldigger
1598
-  chown root:root -R /opt/tunneldigger
1599
-  cd /opt/tunneldigger/broker
1600
-  pip install -r requirements.txt
1601
-
1602
-  sed -i 's|address=.*|address=$BATMAN_IPV6|g' l2tp_broker.cfg
1603
-  sed -i 's|interface=.*|interface=eth0|g' l2tp_broker.cfg
1604
-  sed -i 's|session.up=.*|session.up=/opt/tunneldigger/broker/scripts/up_hook.sh|g' l2tp_broker.cfg
1605
-
1606
-  cd /opt/tunneldigger/broker/scripts
1607
-  echo '#!/bin/sh' > /opt/tunneldigger/broker/scripts/up_hook.sh
1608
-  echo 'INTERFACE="$3"' >> /opt/tunneldigger/broker/scripts/up_hook.sh
1609
-  echo 'ifconfig $INTERFACE up' >> /opt/tunneldigger/broker/scripts/up_hook.sh
1610
-  echo 'batctl if add $INTERFACE' >> /opt/tunneldigger/broker/scripts/up_hook.sh
1611
-  echo 'if [ `cat /sys/class/net/bat0/operstate` != "up" ]; then' >> /opt/tunneldigger/broker/scripts/up_hook.sh
1612
-  echo "    ifconfig bat0 up" >> /opt/tunneldigger/broker/scripts/up_hook.sh
1613
-  echo 'fi' >> /opt/tunneldigger/broker/scripts/up_hook.sh
1614
-  chmod 755 up_hook.sh
1615
-
1616
-  # make a systemd service to run ./l2tp_broker.py l2tp_broker.cfg
1617
-  echo '[Unit]' > /etc/systemd/system/tunneldigger.service
1618
-  echo 'Description=tunnerdigger (l2tp tunnel)' >> /etc/systemd/system/tunneldigger.service
1619
-  echo 'After=syslog.target' >> /etc/systemd/system/tunneldigger.service
1620
-  echo 'After=network.target' >> /etc/systemd/system/tunneldigger.service
1621
-  echo '' >> /etc/systemd/system/tunneldigger.service
1622
-  echo '[Service]' >> /etc/systemd/system/tunneldigger.service
1623
-  echo 'Type=simple' >> /etc/systemd/system/tunneldigger.service
1624
-  echo 'User=root' >> /etc/systemd/system/tunneldigger.service
1625
-  echo 'Group=root' >> /etc/systemd/system/tunneldigger.service
1626
-  echo 'WorkingDirectory=/opt/tunneldigger/broker' >> /etc/systemd/system/tunneldigger.service
1627
-  echo 'ExecStart=/opt/tunneldigger/broker/l2tp_broker.py l2tp_broker.cfg' >> /etc/systemd/system/tunneldigger.service
1628
-  echo 'Restart=always' >> /etc/systemd/system/tunneldigger.service
1629
-  echo 'Environment="USER=root" "HOME=/opt/tunneldigger/broker"' >> /etc/systemd/system/tunneldigger.service
1630
-  echo '' >> /etc/systemd/system/tunneldigger.service
1631
-  echo '[Install]' >> /etc/systemd/system/tunneldigger.service
1632
-  echo 'WantedBy=multi-user.target' >> /etc/systemd/system/tunneldigger.service
1633
-  systemctl enable tunneldigger
1634
-  systemctl daemon-reload
1635
-  systemctl restart tunneldigger
1583
+  # TODO turn the following into a script which can be run on startup
1584
+
1585
+  # stop network manager to make the mesh network work
1586
+  service networking stop
1587
+
1588
+  # configure the wlan interface to operate with mtus of 1532(batman requires it) and turn enc off to ensure it works
1589
+  ifconfig wlan0 down
1590
+  ifconfig wlan0 mtu 1532
1591
+  iwconfig wlan0 enc off
1592
+
1593
+  # add the interface to the ad-hoc network - or create it.
1594
+  iwconfig wlan0 mode ad-hoc essid NetworkName ap $BATMAN_IPV6 channel 2
1595
+
1596
+  # add wlan0 to the batman-adv virtual interface(so it can communicate with other batman-adv nodes)
1597
+  batctl if add wlan0
1598
+  ifconfig wlan0 up
1599
+  ifconfig bat0 up
1600
+
1601
+  # make the bridge linking the batman-adv virtual interface to the ethernet port
1602
+  brctl addbr bridge-link
1603
+  brctl addif bridge-link bat0
1604
+  brctl addif bridge-link eth0
1605
+
1606
+  #get the ip address for the bridge from the dhcp server
1607
+  dhclient bridge-link
1636 1608
 
1637 1609
   if ! grep -q "Mesh Networking (B.A.T.M.A.N)" /home/$MY_USERNAME/README; then
1638 1610
       echo '' >> /home/$MY_USERNAME/README