+ if (family != other.family)
+ return false;
+ if (addrtype != other.addrtype)
+ return false;
+ if (scope != other.scope)
+ return false;
+ if (addrtype == ID)
+ return port_id() == other.port_id();
+ if (addrtype == NAME)
+ return name_domain() == other.name_domain()
+ && port_name() == other.port_name();
+ if (addrtype == NAMESEQ)
+ return name_seq() == other.name_seq();
+ return memcmp(this, &other, sizeof(*this)) == 0;
+}
+
+inline
+posixx::linux::tipc::portid& posixx::linux::tipc::sockaddr::port_id() throw ()
+{
+ return *reinterpret_cast<portid*>(&addr.id);
+}
+
+inline
+const posixx::linux::tipc::portid& posixx::linux::tipc::sockaddr::port_id()
+ const throw ()
+{
+ return *reinterpret_cast<const portid*>(&addr.id);
+}
+
+inline
+posixx::linux::tipc::name& posixx::linux::tipc::sockaddr::port_name() throw ()
+{
+ return *reinterpret_cast<name*>(&addr.name.name);
+}
+
+inline
+const posixx::linux::tipc::name& posixx::linux::tipc::sockaddr::port_name()
+ const throw ()
+{
+ return *reinterpret_cast<const name*>(&addr.name.name);
+}
+
+inline
+posixx::linux::tipc::addr& posixx::linux::tipc::sockaddr::name_domain()
+ throw ()
+{
+ return *reinterpret_cast<tipc::addr*>(&addr.name.domain);
+}
+
+inline
+const posixx::linux::tipc::addr& posixx::linux::tipc::sockaddr::name_domain()
+ const throw ()
+{
+ return *reinterpret_cast<const tipc::addr*>(&addr.name.domain);
+}
+
+inline
+posixx::linux::tipc::nameseq& posixx::linux::tipc::sockaddr::name_seq()
+ throw ()
+{
+ return *reinterpret_cast<nameseq*>(&addr.nameseq);
+}
+
+inline
+const posixx::linux::tipc::nameseq& posixx::linux::tipc::sockaddr::name_seq()
+ const throw ()
+{
+ return *reinterpret_cast<const nameseq*>(&addr.nameseq);