diff options
| author | yangwei <[email protected]> | 2023-08-30 00:36:15 +0800 |
|---|---|---|
| committer | yangwei <[email protected]> | 2023-08-30 00:36:15 +0800 |
| commit | a3e32acfe8a96ce517dcd1f361b4d10b795d1a5e (patch) | |
| tree | 9e2292ff875181e90cdc169c53abc8a64ac6c7e6 /include | |
| parent | 460967d296f8bf175d076f9a9498b0fd1f6ea419 (diff) | |
✨ feat(session addr): support session_get0_addr
Diffstat (limited to 'include')
| -rw-r--r-- | include/stellar/session.h | 36 |
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); |
