Add injection support

Added injection support based on rtl8188eus driver modification
for aircrack-ng from rofl0r:

aircrack-ng/rtl8188eus@e48f669

Changes to be committed:
	modified:   core/rtw_xmit.c
	modified:   include/drv_conf.h
This commit is contained in:
j4munoz 2020-10-25 17:53:48 +01:00
parent 3a6f393add
commit 71bdb27e52
2 changed files with 22 additions and 5 deletions

View File

@ -4570,8 +4570,10 @@ s32 rtw_monitor_xmit_entry(struct sk_buff *skb, struct net_device *ndev)
unsigned char *pframe; unsigned char *pframe;
u8 dummybuf[32]; u8 dummybuf[32];
int len = skb->len, rtap_len; int len = skb->len, rtap_len;
#ifdef CONFIG_MONITOR_MODE_XMIT
int consume;
#endif /* CONFIG_MONITOR_MODE_XMIT */
if (likely(skb))
rtw_mstat_update(MSTAT_TYPE_SKB, MSTAT_ALLOC_SUCCESS, skb->truesize); rtw_mstat_update(MSTAT_TYPE_SKB, MSTAT_ALLOC_SUCCESS, skb->truesize);
#ifndef CONFIG_CUSTOMER_ALIBABA_GENERAL #ifndef CONFIG_CUSTOMER_ALIBABA_GENERAL
@ -4587,13 +4589,25 @@ s32 rtw_monitor_xmit_entry(struct sk_buff *skb, struct net_device *ndev)
if (unlikely(skb->len < rtap_len)) if (unlikely(skb->len < rtap_len))
goto fail; goto fail;
#ifdef CONFIG_MONITOR_MODE_XMIT
len -= sizeof(struct ieee80211_radiotap_header);
rtap_len -= sizeof(struct ieee80211_radiotap_header);
while(rtap_len) {
consume = rtap_len > sizeof(dummybuf) ? sizeof(dummybuf) : rtap_len;
_rtw_pktfile_read(&pktfile, dummybuf, consume);
rtap_len -= consume;
len -= consume;
}
#else /* CONFIG_MONITOR_MODE_XMIT */
if (rtap_len != 12) { if (rtap_len != 12) {
RTW_INFO("radiotap len (should be 14): %d\n", rtap_len); RTW_INFO("radiotap len (should be 14): %d\n", rtap_len);
goto fail; goto fail;
} }
_rtw_pktfile_read(&pktfile, dummybuf, rtap_len-sizeof(struct ieee80211_radiotap_header)); _rtw_pktfile_read(&pktfile, dummybuf, rtap_len-sizeof(struct ieee80211_radiotap_header));
len = len - rtap_len; len = len - rtap_len;
#endif #endif /* CONFIG_MONITOR_MODE_XMIT */
#endif /* CONFIG_CUSTOMER_ALIBABA_GENERAL */
pmgntframe = alloc_mgtxmitframe(pxmitpriv); pmgntframe = alloc_mgtxmitframe(pxmitpriv);
if (pmgntframe == NULL) { if (pmgntframe == NULL) {
rtw_udelay_os(500); rtw_udelay_os(500);
@ -4633,6 +4647,9 @@ s32 rtw_monitor_xmit_entry(struct sk_buff *skb, struct net_device *ndev)
dump_mgntframe(padapter, pmgntframe); dump_mgntframe(padapter, pmgntframe);
fail: fail:
#ifdef CONFIG_MONITOR_MODE_XMIT
rtw_endofpktfile(&pktfile);
#endif /* CONFIG_MONITOR_MODE_XMIT */
rtw_skb_free(skb); rtw_skb_free(skb);
return 0; return 0;
} }

View File

@ -111,7 +111,7 @@
#endif #endif
#ifdef CONFIG_WIFI_MONITOR #ifdef CONFIG_WIFI_MONITOR
/* #define CONFIG_MONITOR_MODE_XMIT */ #define CONFIG_MONITOR_MODE_XMIT
#endif #endif
#ifdef CONFIG_CUSTOMER_ALIBABA_GENERAL #ifdef CONFIG_CUSTOMER_ALIBABA_GENERAL