Merge pull request #51 from j4munoz/master

Add injection support
This commit is contained in:
Rin Cat 2020-10-29 18:48:48 -04:00 committed by GitHub
commit 61a2ab6ce4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 5 deletions

View File

@ -4570,9 +4570,11 @@ 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;
rtw_mstat_update(MSTAT_TYPE_SKB, MSTAT_ALLOC_SUCCESS, skb->truesize); #endif /* CONFIG_MONITOR_MODE_XMIT */
if (likely(skb))
rtw_mstat_update(MSTAT_TYPE_SKB, MSTAT_ALLOC_SUCCESS, skb->truesize);
#ifndef CONFIG_CUSTOMER_ALIBABA_GENERAL #ifndef CONFIG_CUSTOMER_ALIBABA_GENERAL
if (unlikely(skb->len < sizeof(struct ieee80211_radiotap_header))) if (unlikely(skb->len < sizeof(struct ieee80211_radiotap_header)))
@ -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