aboutsummaryrefslogtreecommitdiff
path: root/slirp/bootp.c
diff options
context:
space:
mode:
authorFam Zheng <famz@redhat.com>2018-09-14 15:26:16 +0800
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2018-10-21 21:24:55 +0200
commit0fca92b9077af9817c04545cdfc519fe95c6fde9 (patch)
tree2b9a1093bebb6adc699d5031e623f25f243e9259 /slirp/bootp.c
parent6e157a0339793bb081705f52318fc77afd10addf (diff)
slirp: Implement RFC2132 TFTP server name
This new usernet option can be used to add data for option 66 (tftp server name) in the BOOTP reply, which is useful in PXE based automatic OS install such as OpenBSD. Signed-off-by: Fam Zheng <famz@redhat.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Tested-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Diffstat (limited to 'slirp/bootp.c')
-rw-r--r--slirp/bootp.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/slirp/bootp.c b/slirp/bootp.c
index 1e8185f0ec..7b1af73c95 100644
--- a/slirp/bootp.c
+++ b/slirp/bootp.c
@@ -318,6 +318,19 @@ static void bootp_reply(Slirp *slirp, const struct bootp_t *bp)
}
}
+ if (slirp->tftp_server_name) {
+ val = strlen(slirp->tftp_server_name);
+ if (q + val + 2 >= end) {
+ g_warning("DHCP packet size exceeded, "
+ "omitting tftp-server-name option.");
+ } else {
+ *q++ = RFC2132_TFTP_SERVER_NAME;
+ *q++ = val;
+ memcpy(q, slirp->tftp_server_name, val);
+ q += val;
+ }
+ }
+
if (slirp->vdnssearch) {
val = slirp->vdnssearch_len;
if (q + val >= end) {