#define REFCLK_HOPF_SERIAL 38 /* hopf DCF77/GPS serial receiver */
#define REFCLK_HOPF_PCI 39 /* hopf DCF77/GPS PCI receiver */
#define REFCLK_JJY 40 /* JJY receiver */
- #define REFCLK_TT560 41 /* TrueTime 560 IRIG-B decoder (40) */
- #define REFCLK_MAX 41 /* Grow as needed... */
+ #define REFCLK_TT560 41 /* TrueTime 560 IRIG-B decoder */
+ #define REFCLK_ZYFER 42 /* Zyfer GPStarplus receiver */
+ #define REFCLK_MAX 42 /* Grow as needed... */
+ /*
+ * Macro for sockaddr_storage structures operations
+ */
+#define SOCKCMP(sock1, sock2) (((struct sockaddr_storage*)sock1)->ss_family == ((struct sockaddr_storage*)sock2)->ss_family ? \
+ ((struct sockaddr_storage*)sock1)->ss_family == AF_INET ? \
+ memcmp(&((struct sockaddr_in*)sock1)->sin_addr, &((struct sockaddr_in*)sock2)->sin_addr, sizeof(struct in_addr))==0 : \
+ memcmp(&((struct sockaddr_in6*)sock1)->sin6_addr, &((struct sockaddr_in6*)sock2)->sin6_addr, sizeof(struct in6_addr))==0 : \
+ 0)
+
+#define SOCKNUL(sock1) (((struct sockaddr_storage*)sock1)->ss_family == AF_INET ? \
+ (((struct sockaddr_in*)sock1)->sin_addr.s_addr == 0) : \
+ (IN6_IS_ADDR_UNSPECIFIED(&((struct sockaddr_in6*)sock1)->sin6_addr)))
+
+#define SOCKLEN(sock) (((struct sockaddr_storage*)sock)->ss_family == AF_INET ? \
+ (sizeof(struct sockaddr_in)) : \
+ (sizeof(struct sockaddr_in6)))
+
+#define ANYSOCK(sock) memset(((struct sockaddr_in*)sock), 0, sizeof(struct sockaddr_storage)-sizeof(struct sockaddr_in))
+
+#define ANY_INTERFACE_CHOOSE(sock) (((struct sockaddr_storage*)sock)->ss_family == AF_INET ? \
+ any_interface : any6_interface)
+
+
/*
* We tell reference clocks from real peers by giving the reference
* clocks an address of the form 127.127.t.u, where t is the type and