diff options
author | Tom Gundersen <teg@jklm.no> | 2014-05-20 11:04:50 +0200 |
---|---|---|
committer | Tom Gundersen <teg@jklm.no> | 2014-05-20 23:31:22 +0200 |
commit | 20b958bf157dfb2f521b191ef7158035bcaa3003 (patch) | |
tree | d5964a60f26aaa1aeb4b0771a1f2a2b0f0efed10 /src/libsystemd-network/dhcp-packet.c | |
parent | ece6e766cf89c8ec82ad135969dedf16cd7c1ee8 (diff) |
sd-dhcp: refactor dhcp_option_append
Store a pointer to the options in the DHCPMessage struct, and pass
this together with an offset around, rather than a uint8_t**.
This avoids us having to (re)compute the pointer; and changes
dhcp_option_append from adjusting both the pointer to the next
option and the remaining size of the options, to just adjusting
the current offset.
This makes the code a bit simpler to follow IMHO, but there should
be no functional change.
Diffstat (limited to 'src/libsystemd-network/dhcp-packet.c')
-rw-r--r-- | src/libsystemd-network/dhcp-packet.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/libsystemd-network/dhcp-packet.c b/src/libsystemd-network/dhcp-packet.c index d72d7a686d..10b645759e 100644 --- a/src/libsystemd-network/dhcp-packet.c +++ b/src/libsystemd-network/dhcp-packet.c @@ -38,8 +38,9 @@ #define DHCP_CLIENT_MIN_OPTIONS_SIZE 312 int dhcp_message_init(DHCPMessage *message, uint8_t op, uint32_t xid, - uint8_t type, uint8_t **opt, size_t *optlen) { - int err; + uint8_t type, uint8_t options[], size_t optlen, size_t *optoffset) { + size_t offset = 0; + int r; assert(op == BOOTREQUEST || op == BOOTREPLY); @@ -49,12 +50,12 @@ int dhcp_message_init(DHCPMessage *message, uint8_t op, uint32_t xid, message->xid = htobe32(xid); message->magic = htobe32(DHCP_MAGIC_COOKIE); - *opt = (uint8_t *)(message + 1); + r = dhcp_option_append(message->options, optlen, &offset, + DHCP_OPTION_MESSAGE_TYPE, 1, &type); + if (r < 0) + return r; - err = dhcp_option_append(opt, optlen, DHCP_OPTION_MESSAGE_TYPE, 1, - &type); - if (err < 0) - return err; + *optoffset = offset; return 0; } |