|
@@ -83,35 +83,35 @@ ieee802154_hdr_push_sechdr(u8 *buf, const struct ieee802154_sechdr *hdr)
|
|
|
}
|
|
|
|
|
|
int
|
|
|
-ieee802154_hdr_push(struct sk_buff *skb, const struct ieee802154_hdr *hdr)
|
|
|
+ieee802154_hdr_push(struct sk_buff *skb, struct ieee802154_hdr *hdr)
|
|
|
{
|
|
|
u8 buf[MAC802154_FRAME_HARD_HEADER_LEN];
|
|
|
int pos = 2;
|
|
|
int rc;
|
|
|
- struct ieee802154_hdr_fc fc = hdr->fc;
|
|
|
+ struct ieee802154_hdr_fc *fc = &hdr->fc;
|
|
|
|
|
|
buf[pos++] = hdr->seq;
|
|
|
|
|
|
- fc.dest_addr_mode = hdr->dest.mode;
|
|
|
+ fc->dest_addr_mode = hdr->dest.mode;
|
|
|
|
|
|
rc = ieee802154_hdr_push_addr(buf + pos, &hdr->dest, false);
|
|
|
if (rc < 0)
|
|
|
return -EINVAL;
|
|
|
pos += rc;
|
|
|
|
|
|
- fc.source_addr_mode = hdr->source.mode;
|
|
|
+ fc->source_addr_mode = hdr->source.mode;
|
|
|
|
|
|
if (hdr->source.pan_id == hdr->dest.pan_id &&
|
|
|
hdr->dest.mode != IEEE802154_ADDR_NONE)
|
|
|
- fc.intra_pan = true;
|
|
|
+ fc->intra_pan = true;
|
|
|
|
|
|
- rc = ieee802154_hdr_push_addr(buf + pos, &hdr->source, fc.intra_pan);
|
|
|
+ rc = ieee802154_hdr_push_addr(buf + pos, &hdr->source, fc->intra_pan);
|
|
|
if (rc < 0)
|
|
|
return -EINVAL;
|
|
|
pos += rc;
|
|
|
|
|
|
- if (fc.security_enabled) {
|
|
|
- fc.version = 1;
|
|
|
+ if (fc->security_enabled) {
|
|
|
+ fc->version = 1;
|
|
|
|
|
|
rc = ieee802154_hdr_push_sechdr(buf + pos, &hdr->sec);
|
|
|
if (rc < 0)
|
|
@@ -120,7 +120,7 @@ ieee802154_hdr_push(struct sk_buff *skb, const struct ieee802154_hdr *hdr)
|
|
|
pos += rc;
|
|
|
}
|
|
|
|
|
|
- memcpy(buf, &fc, 2);
|
|
|
+ memcpy(buf, fc, 2);
|
|
|
|
|
|
memcpy(skb_push(skb, pos), buf, pos);
|
|
|
|