Sfoglia il codice sorgente

system: BAddr: add BAddr_Compare

ambrop7 14 anni fa
parent
commit
6db589b9a8
1 ha cambiato i file con 21 aggiunte e 0 eliminazioni
  1. 21 0
      system/BAddr.h

+ 21 - 0
system/BAddr.h

@@ -240,6 +240,8 @@ static int BAddr_Parse2 (BAddr *addr, char *str, char *name, int name_len, int n
  */
 static int BAddr_Parse (BAddr *addr, char *str, char *name, int name_len) WARN_UNUSED;
 
+static int BAddr_Compare (BAddr *addr1, BAddr *addr2);
+
 void BIPAddr_InitInvalid (BIPAddr *addr)
 {
     addr->type = BADDR_TYPE_NONE;
@@ -666,4 +668,23 @@ int BAddr_Parse (BAddr *addr, char *str, char *name, int name_len)
     return BAddr_Parse2(addr, str, name, name_len, 0);
 }
 
+int BAddr_Compare (BAddr *addr1, BAddr *addr2)
+{
+    BAddr_Assert(addr1);
+    BAddr_Assert(addr2);
+    
+    if (addr1->type != addr2->type) {
+        return 0;
+    }
+    
+    switch (addr1->type) {
+        case BADDR_TYPE_IPV4:
+            return (addr1->ipv4.ip == addr2->ipv4.ip && addr1->ipv4.port == addr2->ipv4.port);
+        case BADDR_TYPE_IPV6:
+            return (!memcmp(addr1->ipv6.ip, addr2->ipv6.ip, sizeof(addr1->ipv6.ip)) && addr1->ipv6.port == addr2->ipv6.port);
+        default:
+            return 0;
+    }
+}
+
 #endif