gboolean g_sockaddr_serialize(SerializeArchive *sa, GSockAddr *addr) { if (!addr) { return serialize_write_uint16(sa, 0); } gboolean result = serialize_write_uint16(sa, addr->sa.sa_family); switch (addr->sa.sa_family) { case AF_INET: { result &= _serialize_ipv4(addr, sa); break; } #if SYSLOG_NG_ENABLE_IPV6 case AF_INET6: { result &= _serialize_ipv6(addr, sa); break; } #endif case AF_UNIX: { break; } default: { result = FALSE; break; } } return result; }
static gboolean _serialize_ipv6(GSockAddr* addr, SerializeArchive* sa) { struct in6_addr* in6a; in6a = g_sockaddr_inet6_get_address(addr); return serialize_write_blob(sa, (gchar*) in6a, sizeof(*in6a)) && serialize_write_uint16(sa, htons(g_sockaddr_get_port(addr))); }
static void _write_struct(SerializeArchive *sa, NVTable *self) { serialize_write_uint32(sa, self->size); serialize_write_uint32(sa, self->used); serialize_write_uint16(sa, self->index_size); serialize_write_uint8(sa, self->num_static_entries); serialize_write_uint32_array(sa, self->static_entries, self->num_static_entries); serialize_write_uint32_array(sa, (guint32 *) nv_table_get_index(self), self->index_size * 2); }
static void _write_struct(SerializeArchive *sa, NVTable *self) { guint16 i; NVDynValue *dyn_entries; serialize_write_uint32(sa, self->size); serialize_write_uint32(sa, self->used); serialize_write_uint16(sa, self->num_dyn_entries); serialize_write_uint8(sa, self->num_static_entries); for (i = 0; i < self->num_static_entries; i++) { serialize_write_uint32(sa, self->static_entries[i]); } dyn_entries = nv_table_get_dyn_entries(self); for (i = 0; i < self->num_dyn_entries; i++) { _serialize_nv_dyn_value(sa, &dyn_entries[i]); } }