+/*
+ * In-kernel representation of "struct sa_endpoints" from
+ * userspace. Has enough precision for 32-bit or
+ * 64-bit clients, but does not need to be packed.
+ */
+
+struct user_sa_endpoints {
+ unsigned int sae_srcif; /* optional source interface */
+ user_addr_t sae_srcaddr; /* optional source address */
+ socklen_t sae_srcaddrlen; /* size of source address */
+ user_addr_t sae_dstaddr; /* destination address */
+ socklen_t sae_dstaddrlen; /* size of destination address */
+};
+
+/*
+ * LP64 user version of struct sa_endpoints
+ * WARNING - keep in sync with struct sa_endpoints
+ */
+
+struct user64_sa_endpoints {
+ unsigned int sae_srcif; /* optional source interface */
+ user64_addr_t sae_srcaddr; /* optional source address */
+ socklen_t sae_srcaddrlen; /* size of source address */
+ user64_addr_t sae_dstaddr; /* destination address */
+ socklen_t sae_dstaddrlen; /* size of destination address */
+};
+
+/*
+ * ILP32 user version of struct sa_endpoints
+ * WARNING - keep in sync with struct sa_endpoints
+ */
+
+struct user32_sa_endpoints {
+ unsigned int sae_srcif; /* optional source interface */
+ user32_addr_t sae_srcaddr; /* optional source address */
+ socklen_t sae_srcaddrlen; /* size of source address */
+ user32_addr_t sae_dstaddr; /* destination address */
+ socklen_t sae_dstaddrlen; /* size of destination address */
+};
+