[mc1322x] [PATCH] sniffing proof of concept

Mariano Alvira mar at devl.org
Mon Mar 29 19:54:39 EDT 2010


ignore this one --- it snuck in.

-Mar.

On Mon, Mar 29, 2010 at 07:52:27PM -0400, Mariano Alvira wrote:
> ---
>  net/mac802154/dev.c |   42 ++++++++++++++++++++++++------------------
>  1 files changed, 24 insertions(+), 18 deletions(-)
> 
> diff --git a/net/mac802154/dev.c b/net/mac802154/dev.c
> index cdd0f78..f0171e9 100644
> --- a/net/mac802154/dev.c
> +++ b/net/mac802154/dev.c
> @@ -643,21 +643,24 @@ static int ieee802154_subif_frame(struct ieee802154_sub_if_data *sdata,
>  		dev_warn(&sdata->dev->dev,
>  			"ACK requested, however AACK not supported.\n");
>  
> -	switch (mac_cb_type(skb)) {
> -	case IEEE802154_FC_TYPE_BEACON:
> -		return ieee802154_process_beacon(sdata->dev, skb);
> -	case IEEE802154_FC_TYPE_ACK:
> -		return ieee802154_process_ack(sdata->dev, skb);
> -	case IEEE802154_FC_TYPE_MAC_CMD:
> -		return ieee802154_process_cmd(sdata->dev, skb);
> -	case IEEE802154_FC_TYPE_DATA:
> -		return ieee802154_process_data(sdata->dev, skb);
> -	default:
> -		pr_warning("ieee802154: Bad frame received (type = %d)\n",
> -				mac_cb_type(skb));
> -		kfree_skb(skb);
> -		return NET_RX_DROP;
> -	}
> +	/* when sniffing, treat everything like data */
> +	return ieee802154_process_data(sdata->dev, skb);
> +
> +/* 	switch (mac_cb_type(skb)) { */
> +/* 	case IEEE802154_FC_TYPE_BEACON: */
> +/* 		return ieee802154_process_beacon(sdata->dev, skb); */
> +/* 	case IEEE802154_FC_TYPE_ACK: */
> +/* 		return ieee802154_process_ack(sdata->dev, skb); */
> +/* 	case IEEE802154_FC_TYPE_MAC_CMD: */
> +/* 		return ieee802154_process_cmd(sdata->dev, skb); */
> +/* 	case IEEE802154_FC_TYPE_DATA: */
> +/* 		return ieee802154_process_data(sdata->dev, skb); */
> +/* 	default: */
> +/* 		pr_warning("ieee802154: Bad frame received (type = %d)\n", */
> +/* 				mac_cb_type(skb)); */
> +/* 		kfree_skb(skb); */
> +/* 		return NET_RX_DROP; */
> +/* 	} */
>  }
>  
>  static u8 fetch_skb_u8(struct sk_buff *skb)
> @@ -824,12 +827,14 @@ void ieee802154_subif_rx(struct ieee802154_dev *hw, struct sk_buff *skb)
>  
>  		if (skb->len < 2) {
>  			pr_debug("%s(): Got invalid frame\n", __func__);
> -			goto out;
> +			/* don't bail if sniffing */
> +			//goto out;
>  		}
>  		crc = crc_ccitt(0, skb->data, skb->len);
>  		if (crc) {
>  			pr_debug("%s(): CRC mismatch\n", __func__);
> -			goto out;
> +			/* don't bail if sniffing */
> +			//goto out;
>  		}
>  		skb_trim(skb, skb->len - 2); /* CRC */
>  	}
> @@ -837,7 +842,8 @@ void ieee802154_subif_rx(struct ieee802154_dev *hw, struct sk_buff *skb)
>  	ret = parse_frame_start(skb); /* 3 bytes pulled after this */
>  	if (ret) {
>  		pr_debug("%s(): Got invalid frame\n", __func__);
> -		goto out;
> +		/* don't bail if sniffing */
> +		//goto out;
>  	}
>  
>  	pr_debug("%s() frame %d\n", __func__, mac_cb_type(skb));
> -- 
> 1.6.3.1
> 



More information about the mc1322x mailing list