|
@@ -17,6 +17,7 @@
|
17
|
17
|
#include <ipxe/netdevice.h>
|
18
|
18
|
#include <ipxe/profile.h>
|
19
|
19
|
#include <ipxe/process.h>
|
|
20
|
+#include <ipxe/job.h>
|
20
|
21
|
#include <ipxe/tcpip.h>
|
21
|
22
|
#include <ipxe/tcp.h>
|
22
|
23
|
|
|
@@ -1704,10 +1705,30 @@ static int tcp_xfer_deliver ( struct tcp_connection *tcp,
|
1704
|
1705
|
return 0;
|
1705
|
1706
|
}
|
1706
|
1707
|
|
|
1708
|
+/**
|
|
1709
|
+ * Report job progress
|
|
1710
|
+ *
|
|
1711
|
+ * @v tcp TCP connection
|
|
1712
|
+ * @v progress Progress report to fill in
|
|
1713
|
+ * @ret ongoing_rc Ongoing job status code (if known)
|
|
1714
|
+ */
|
|
1715
|
+static int tcp_progress ( struct tcp_connection *tcp,
|
|
1716
|
+ struct job_progress *progress ) {
|
|
1717
|
+
|
|
1718
|
+ /* Report connection in progress if applicable */
|
|
1719
|
+ if ( ! TCP_HAS_BEEN_ESTABLISHED ( tcp->tcp_state ) ) {
|
|
1720
|
+ snprintf ( progress->message, sizeof ( progress->message ),
|
|
1721
|
+ "connecting" );
|
|
1722
|
+ }
|
|
1723
|
+
|
|
1724
|
+ return 0;
|
|
1725
|
+}
|
|
1726
|
+
|
1707
|
1727
|
/** TCP data transfer interface operations */
|
1708
|
1728
|
static struct interface_operation tcp_xfer_operations[] = {
|
1709
|
1729
|
INTF_OP ( xfer_deliver, struct tcp_connection *, tcp_xfer_deliver ),
|
1710
|
1730
|
INTF_OP ( xfer_window, struct tcp_connection *, tcp_xfer_window ),
|
|
1731
|
+ INTF_OP ( job_progress, struct tcp_connection *, tcp_progress ),
|
1711
|
1732
|
INTF_OP ( intf_close, struct tcp_connection *, tcp_xfer_close ),
|
1712
|
1733
|
};
|
1713
|
1734
|
|