summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authoryangwei <[email protected]>2023-08-30 00:36:15 +0800
committeryangwei <[email protected]>2023-08-30 00:36:15 +0800
commita3e32acfe8a96ce517dcd1f361b4d10b795d1a5e (patch)
tree9e2292ff875181e90cdc169c53abc8a64ac6c7e6 /include
parent460967d296f8bf175d076f9a9498b0fd1f6ea419 (diff)
✨ feat(session addr): support session_get0_addr
Diffstat (limited to 'include')
-rw-r--r--include/stellar/session.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/include/stellar/session.h b/include/stellar/session.h
index 75772b3..428130a 100644
--- a/include/stellar/session.h
+++ b/include/stellar/session.h
@@ -32,6 +32,42 @@ int session_is_symmetric(const struct session *sess, unsigned char *flag);
#define SESSION_DIRECTION_OUT 1
int session_get_direction(const struct session *sess);
+enum session_addr_type
+{
+ SESSION_ADDR_TYPE_IPV4_TCP,
+ SESSION_ADDR_TYPE_IPV4_UDP,
+ SESSION_ADDR_TYPE_IPV6_TCP,
+ SESSION_ADDR_TYPE_IPV6_UDP,
+ SESSION_ADDR_TYPE_UNKNOWN,
+ __SESSION_ADDR_TYPE_MAX,
+};
+struct session_addr_ipv4{
+ uint32_t saddr; /* network order */
+ uint32_t daddr; /* network order */
+ uint16_t sport; /* network order */
+ uint16_t dport; /* network order */
+};
+
+#include <netinet/in.h>
+struct session_addr_ipv6
+{
+ uint8_t saddr[INET6_ADDRSTRLEN] ;
+ uint8_t daddr[INET6_ADDRSTRLEN] ;
+ uint16_t sport; /* network order */
+ uint16_t dport; /* network order */
+};
+
+struct session_addr
+{
+ union
+ {
+ struct session_addr_ipv4 ipv4;
+ struct session_addr_ipv6 ipv6;
+ };
+};
+
+struct session_addr *session_get0_addr(struct session *sess, enum session_addr_type *addr_type);
+
const char *session_get0_readable_addr(struct session *sess);
const char *session_get0_current_payload(struct session *sess, size_t *payload_len);