Added broadcast IP address and server name "slirp" to DHCP reply.
TODO: port more features from the Bochs 'vnet' DHCP server to Slirp.
This commit is contained in:
parent
ae936e086f
commit
5257e253ae
@ -152,7 +152,7 @@ static void bootp_reply(Slirp *slirp, const struct bootp_t *bp)
|
||||
struct mbuf *m;
|
||||
struct bootp_t *rbp;
|
||||
struct sockaddr_in saddr, daddr;
|
||||
struct in_addr preq_addr;
|
||||
struct in_addr preq_addr, bcast_addr;
|
||||
int dhcp_msg_type, val;
|
||||
uint8_t *q;
|
||||
uint8_t client_ethaddr[ETH_ALEN];
|
||||
@ -258,6 +258,8 @@ static void bootp_reply(Slirp *slirp, const struct bootp_t *bp)
|
||||
snprintf((char *)rbp->bp_file, sizeof(rbp->bp_file), "%s",
|
||||
slirp->bootp_filename);
|
||||
|
||||
strcpy((char *)rbp->bp_sname, "slirp");
|
||||
|
||||
*q++ = RFC2132_SRV_ID;
|
||||
*q++ = 4;
|
||||
memcpy(q, &saddr.sin_addr, 4);
|
||||
@ -268,6 +270,12 @@ static void bootp_reply(Slirp *slirp, const struct bootp_t *bp)
|
||||
memcpy(q, &slirp->vnetwork_mask, 4);
|
||||
q += 4;
|
||||
|
||||
*q++ = RFC1533_INTBROADCAST;
|
||||
*q++ = 4;
|
||||
bcast_addr.s_addr = slirp->vhost_addr.s_addr | ~slirp->vnetwork_mask.s_addr;
|
||||
memcpy(q, &bcast_addr, 4);
|
||||
q += 4;
|
||||
|
||||
if (!slirp->restricted) {
|
||||
*q++ = RFC1533_GATEWAY;
|
||||
*q++ = 4;
|
||||
|
Loading…
x
Reference in New Issue
Block a user