diff --git a/scpmisc.h b/scpmisc.h
index c82934786a6edf7334d44ae8f986e30a3394dfa3..7d0b32674e072a27821cf640c199b2917032f277 100644
--- a/scpmisc.h
+++ b/scpmisc.h
@@ -46,3 +46,24 @@ char	*xstrdup(const char *);
 char *ssh_get_progname(char *);
 void fatal(char* fmt,...);
 void sanitise_stdfd(void);
+
+/* Required for non-BSD platforms, from OpenSSH's defines.h */
+#ifndef timersub
+#define timersub(a, b, result)                  \
+   do {                             \
+      (result)->tv_sec = (a)->tv_sec - (b)->tv_sec;     \
+      (result)->tv_usec = (a)->tv_usec - (b)->tv_usec;      \
+      if ((result)->tv_usec < 0) {              \
+     --(result)->tv_sec;                    \
+     (result)->tv_usec += 1000000;              \
+      }                             \
+   } while (0)
+#endif
+
+#ifndef TIMEVAL_TO_TIMESPEC
+#define TIMEVAL_TO_TIMESPEC(tv, ts) {                   \
+    (ts)->tv_sec = (tv)->tv_sec;                    \
+    (ts)->tv_nsec = (tv)->tv_usec * 1000;               \
+}
+#endif
+