X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd-network%2Fdhcp-packet.c;fp=src%2Flibsystemd-network%2Fdhcp-packet.c;h=7581daeeeb355ae4c53b46fca85e77b2dd837abd;hb=76253e73f9c9c24fec755e485516f3b55d0707b4;hp=9f850fdebbf79835d9a5e751bfe3b8d4ceb6167f;hpb=5482192e5774f52f2af0665a3b58539295e9c0a4;p=elogind.git diff --git a/src/libsystemd-network/dhcp-packet.c b/src/libsystemd-network/dhcp-packet.c index 9f850fdeb..7581daeee 100644 --- a/src/libsystemd-network/dhcp-packet.c +++ b/src/libsystemd-network/dhcp-packet.c @@ -38,15 +38,17 @@ #define DHCP_CLIENT_MIN_OPTIONS_SIZE 312 int dhcp_message_init(DHCPMessage *message, uint8_t op, uint32_t xid, - uint8_t type, size_t optlen, size_t *optoffset) { + uint8_t type, uint16_t arp_type, size_t optlen, + size_t *optoffset) { size_t offset = 0; int r; assert(op == BOOTREQUEST || op == BOOTREPLY); + assert(arp_type == ARPHRD_ETHER || arp_type == ARPHRD_INFINIBAND); message->op = op; - message->htype = ARPHRD_ETHER; - message->hlen = ETHER_ADDR_LEN; + message->htype = arp_type; + message->hlen = (arp_type == ARPHRD_ETHER) ? ETHER_ADDR_LEN : 0; message->xid = htobe32(xid); message->magic = htobe32(DHCP_MAGIC_COOKIE);