diff --git a/src/net/udp/dns.c b/src/net/udp/dns.c index e849472d..897e0f85 100644 --- a/src/net/udp/dns.c +++ b/src/net/udp/dns.c @@ -42,6 +42,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include #include #include +#include #include #include #include @@ -867,6 +868,22 @@ static void dns_xfer_close ( struct dns_request *dns, int rc ) { dns_done ( dns, rc ); } +/** + * Report job progress + * + * @v dns DNS request + * @v progress Progress report to fill in + * @ret ongoing_rc Ongoing job status code (if known) + */ +static int dns_progress ( struct dns_request *dns, + struct job_progress *progress ) { + + /* Show current question as progress message */ + dns_decode ( &dns->name, progress->message, + sizeof ( progress->message ) ); + return 0; +} + /** DNS socket interface operations */ static struct interface_operation dns_socket_operations[] = { INTF_OP ( xfer_deliver, struct dns_request *, dns_xfer_deliver ), @@ -879,6 +896,7 @@ static struct interface_descriptor dns_socket_desc = /** DNS resolver interface operations */ static struct interface_operation dns_resolv_op[] = { + INTF_OP ( job_progress, struct dns_request *, dns_progress ), INTF_OP ( intf_close, struct dns_request *, dns_done ), };