[UDP] replace UDP offsets by struct UdpHeader - #356
Open
ArnaudD-FR wants to merge 3 commits into
Open
Conversation
nuno-silva
reviewed
Feb 7, 2019
| uint16_t dport; | ||
| uint16_t length; | ||
| uint16_t checksum; | ||
| }; |
Contributor
There was a problem hiding this comment.
This struct should also be __attribute__((__packed__)), right?
Contributor
Author
There was a problem hiding this comment.
No need for this attribute, this struct is perfectly aligned even for 32 bits microcontrollers
added 3 commits
February 11, 2019 20:52
* keep MAC/IP relations into an ARP 'store'. * fix issue when IP packet is received from local network: answer is no more broadcasted * define ETHERCARD_ARP_STORE_SIZE to set cache size
* less error prone * decrease code size to flash * introduce ethernet_header(), ethernet_payload(), ip_header(), ip_payload().... basic functions to retrieve headers and payloads * use ntoh and hton instead of manual multibytes adaptations. getBigEndianLong has been replaced by standard function ntohl.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Replace UDP array indexes by struct UdpHeader
Description
less error prone
decrease code size to flash (save some bytes, see below)
move
ethernet_header(),ethernet_payload(),ip_header(),ip_payload().... basic functions to new headerEtherUtils.has those function are required from many places. I didn't want to make them "public" by moving them toEtherCard.h, that's why there is a new headeradapt
htonstovoid htons(uint16_t &d, const uint16_t v). I've not been able to reduce ASM size ofuint16_t htons(const uint16_t v), so I've created a new one accepting the returned value as reference and reduce the code size for each call by 6 bytes.Rework of htons
for example (building getDHCPandDNS, using CC_VERSION = 5.4.0 (avr-gcc)):
using
uint16_t htons(const uint16_t v)generate the following code:
using
void htons(uint16_t &d, const uint16_t v)generate the following code:
as we can see the following 3 lines doing the bytes swap have disappeared for the same result:
Code size evolution depending on examples
Differences are between revisions 7f42021 and 5ca0418
Negative value: save size
Positive value: increase size