The ovm_ipv6_t
type is the OrchIDS type of IPv6 addresses.
It is defined this way in src/lang.h:
typedef struct ovm_ipv6_s ovm_ipv6_t; struct ovm_ipv6_s { gc_header_t gc; struct in6_addr ipv6addr; };
This is a type of garbage-collectable data. To allocate a new object of type ovm_ipv6_t
, use the function:
ovm_var_t *ovm_ipv6_new(gc_t *gc_ctx);
This creates a new uninitialized ovm_ipv6_t
object. Its return type is the universal type
ovm_var_t
instead of ovm_ipv6_t
, for practical reasons. Calling res
the result, one always has TYPE(res)==T_IPV6
.
The result is created white, and much be gc_touch()
ed before storing it into a garbage-collectable object.
The returned ovm_ipv6_t
object res
is modifiable. One can read from or write from it by using the IPV6()
macro, e.g.:
struct in6_addr addr; for (i=0 ; i<16 ; i++) { addr.s6_addr[i] = IPV6(res).s6_addr[i]; IPV6(res).s6_addr[i] = addr.s6_addr[i]; }