net-wireless/aircrack-ng: support 8812au
authorZero_Chaos <zerochaos@gentoo.org>
Tue, 7 Aug 2018 02:14:16 +0000 (02:14 +0000)
committerZero_Chaos <zerochaos@gentoo.org>
Tue, 7 Aug 2018 02:14:33 +0000 (02:14 +0000)
add upstream patch to support realtek 8812au and variants

Package-Manager: Portage-2.3.44, Repoman-2.3.10

net-wireless/aircrack-ng/aircrack-ng-1.3-r1.ebuild [moved from net-wireless/aircrack-ng/aircrack-ng-1.3.ebuild with 98% similarity]
net-wireless/aircrack-ng/files/aircrack-ng-1.3-8812au.patch [new file with mode: 0644]

similarity index 98%
rename from net-wireless/aircrack-ng/aircrack-ng-1.3.ebuild
rename to net-wireless/aircrack-ng/aircrack-ng-1.3-r1.ebuild
index af3515cb463535e93f1b42c260c27a29abf0c953..c35e3fb3d4afd10bceba68cc242924c410cd48df 100644 (file)
@@ -60,6 +60,7 @@ pkg_setup() {
 }
 
 src_prepare() {
+       eapply "${FILESDIR}/${P}-8812au.patch"
        eapply_user
        eautoreconf
 }
diff --git a/net-wireless/aircrack-ng/files/aircrack-ng-1.3-8812au.patch b/net-wireless/aircrack-ng/files/aircrack-ng-1.3-8812au.patch
new file mode 100644 (file)
index 0000000..6ce0fbc
--- /dev/null
@@ -0,0 +1,118 @@
+commit 3cc9de5e7cbe6565c7e1fe12ebbcf2c6f7413c8d
+Author: Rick Farina (Zero_Chaos) <zerochaos@gentoo.org>
+Date:   Tue Aug 7 01:27:05 2018 +0000
+
+    airmon-ng support 8812au
+
+diff --git a/scripts/airmon-ng.linux b/scripts/airmon-ng.linux
+index 14e4bdcd..d7328f4b 100755
+--- a/scripts/airmon-ng.linux
++++ b/scripts/airmon-ng.linux
+@@ -354,21 +354,21 @@ ifaceIsUp() {
+ #     fi
+ #}
+-#startDeprecatedIface() {
+-#     iwconfig ${1} mode monitor > /dev/null 2>&1
+-#     if [ -n "${2}" ]; then
+-#             if [ ${2} -lt 1000 ]; then
+-#                     iwconfig ${1} channel ${2} > /dev/null 2>&1
+-#             else
+-#                     iwconfig ${1} freq ${2}000000 > /dev/null 2>&1
+-#             fi
+-#     else
+-#             iwconfig ${1} channel ${CH} > /dev/null 2>&1
+-#     fi
+-#     iwconfig ${1} key off > /dev/null 2>&1
+-#     setLink ${1} up
+-#     printf " (monitor mode enabled)"
+-#}
++startDeprecatedIface() {
++      iwconfig ${1} mode monitor > /dev/null 2>&1
++      if [ -n "${2}" ]; then
++              if [ ${2} -lt 1000 ]; then
++                      iwconfig ${1} channel ${2} > /dev/null 2>&1
++              else
++                      iwconfig ${1} freq ${2}000000 > /dev/null 2>&1
++              fi
++      else
++              iwconfig ${1} channel ${CH} > /dev/null 2>&1
++      fi
++      iwconfig ${1} key off > /dev/null 2>&1
++      setLink ${1} up
++      printf " (monitor mode enabled)"
++}
+ yesorno() {
+       read input
+@@ -426,7 +426,7 @@ startMac80211Iface() {
+               done
+       fi
+       #we didn't bail means we need a monitor interface
+-        if [ ${#1} -gt 12 ]; then
++      if [ ${#1} -gt 12 ]; then
+               printf "Interface ${1}mon is too long for linux so it will be renamed to the old style (wlan#) name.\n"
+               findFreeInterface monitor
+       else
+@@ -438,10 +438,16 @@ startMac80211Iface() {
+               fi
+               #we didn't bail means our target interface is available
+               setLink ${1} down
++              if [ "${DRIVER}" = "8812au" ] || [ "${DRIVER}" = "8814au" ] || [ "${DRIVER}" = "rtl8812au" ]; then
++                      #grumble grumble, seriously crap vendor driver
++                      startDeprecatedIface ${1}
++                      setChannelMac80211 ${1}
++                      return
++              fi
+               IW_ERROR="$(iw phy ${PHYDEV} interface add ${1}mon type monitor 2>&1)"
+               if [ -z "${IW_ERROR}" ]; then
+                       sleep 1
+-                      if [ "$(cat /sys/class/ieee80211/${PHYDEV}/device/net/${1}mon/type)" = "803" ]; then
++                      if [ -r "/sys/class/ieee80211/${PHYDEV}/device/net/${1}mon/type" ] && [ "$(cat /sys/class/ieee80211/${PHYDEV}/device/net/${1}mon/type)" = "803" ]; then
+                               setChannelMac80211 ${1}mon
+                       else
+                               printf "\nNewly created monitor mode interface ${1}mon is *NOT* in monitor mode.\n"
+@@ -569,12 +575,12 @@ setChannelMac80211() {
+       fi
+ }
+-#stopDeprecatedIface() {
+-#     setLink $1 down
+-#     iwconfig $1 mode Managed > /dev/null 2>&1
+-#     setLink $1 up
+-#     printf " (monitor mode disabled)"
+-#}
++stopDeprecatedIface() {
++      setLink $1 down
++      iwconfig $1 mode Managed > /dev/null 2>&1
++      setLink $1 up
++      printf " (monitor mode disabled)"
++}
+ stopMac80211Iface() {
+       if [ -f /sys/class/net/${1}/type ]; then
+@@ -587,6 +593,11 @@ stopMac80211Iface() {
+                       printf "please report it.\n"
+                       exit 1
+               else
++                      if [ "${DRIVER}" = "8812au" ] || [ "${DRIVER}" = "8814au" ] || [ "${DRIVER}" = "rtl8812au" ]; then
++                              #grumble grumble, seriously crap vendor driver
++                              stopDeprecatedIface ${1}
++                              return
++                      fi
+                       if [ "${ELITE}" = "0" ]; then
+                               local need_sta=1
+                               if [ -d /sys/class/ieee80211/${PHYDEV}/device/net ]; then
+@@ -1316,8 +1327,10 @@ if [ "$DEBUG" = "1" ]; then
+       fi
+ fi
+ if [ "$VERBOSE" = "1" ]; then
+-      lsb_release -a
+-      printf "\n"
++      if [ -n "$(command -v lsb_release 2> /dev/null)" ]; then
++              lsb_release -a
++              printf "\n"
++      fi
+       uname -a
+       checkvm