[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