|
|
@@ -130,28 +130,52 @@ typedef struct {
|
|
|
} BAddr;
|
|
|
|
|
|
/**
|
|
|
- * Initializes an invalid address.
|
|
|
+ * Makes an invalid address.
|
|
|
*/
|
|
|
-static void BAddr_InitNone (BAddr *addr);
|
|
|
+static BAddr BAddr_MakeNone (void);
|
|
|
|
|
|
/**
|
|
|
- * Initializes an IPv4 address.
|
|
|
+ * Makes an IPv4 address.
|
|
|
*
|
|
|
- * @param addr the object
|
|
|
* @param ip IP address in network byte order
|
|
|
* @param port port number in network byte order
|
|
|
*/
|
|
|
-static void BAddr_InitIPv4 (BAddr *addr, uint32_t ip, uint16_t port);
|
|
|
+static BAddr BAddr_MakeIPv4 (uint32_t ip, uint16_t port);
|
|
|
|
|
|
/**
|
|
|
- * Initializes an IPv6 address.
|
|
|
+ * Makes an IPv6 address.
|
|
|
*
|
|
|
- * @param addr the object
|
|
|
- * @param ip 16-byte IP address in network byte order
|
|
|
+ * @param ip IP address (16 bytes)
|
|
|
* @param port port number in network byte order
|
|
|
*/
|
|
|
+static BAddr BAddr_MakeIPv6 (const uint8_t *ip, uint16_t port);
|
|
|
+
|
|
|
+/**
|
|
|
+ * Makes an address from a BIPAddr and port number.
|
|
|
+ *
|
|
|
+ * @param ipaddr the BIPAddr
|
|
|
+ * @param port port number in network byte order
|
|
|
+ */
|
|
|
+static BAddr BAddr_MakeFromIpaddrAndPort (BIPAddr ipaddr, uint16_t port);
|
|
|
+
|
|
|
+/**
|
|
|
+ * Deprecated, use BAddr_MakeNone.
|
|
|
+ */
|
|
|
+static void BAddr_InitNone (BAddr *addr);
|
|
|
+
|
|
|
+/**
|
|
|
+ * Deprecated, use BAddr_MakeIPv4.
|
|
|
+ */
|
|
|
+static void BAddr_InitIPv4 (BAddr *addr, uint32_t ip, uint16_t port);
|
|
|
+
|
|
|
+/**
|
|
|
+ * Deprecated, use BAddr_MakeIPv6.
|
|
|
+ */
|
|
|
static void BAddr_InitIPv6 (BAddr *addr, uint8_t *ip, uint16_t port);
|
|
|
|
|
|
+/**
|
|
|
+ * Deprecated, use BAddr_MakeFromIpaddrAndPort.
|
|
|
+ */
|
|
|
static void BAddr_InitFromIpaddrAndPort (BAddr *addr, BIPAddr ipaddr, uint16_t port);
|
|
|
|
|
|
/**
|
|
|
@@ -459,43 +483,70 @@ void BIPAddr_Print (BIPAddr *addr, char *out)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void BAddr_InitNone (BAddr *addr)
|
|
|
+BAddr BAddr_MakeNone (void)
|
|
|
{
|
|
|
- addr->type = BADDR_TYPE_NONE;
|
|
|
+ BAddr addr;
|
|
|
+ addr.type = BADDR_TYPE_NONE;
|
|
|
+ return addr;
|
|
|
}
|
|
|
|
|
|
-void BAddr_InitIPv4 (BAddr *addr, uint32_t ip, uint16_t port)
|
|
|
+BAddr BAddr_MakeIPv4 (uint32_t ip, uint16_t port)
|
|
|
{
|
|
|
- addr->type = BADDR_TYPE_IPV4;
|
|
|
- addr->ipv4.ip = ip;
|
|
|
- addr->ipv4.port = port;
|
|
|
+ BAddr addr;
|
|
|
+ addr.type = BADDR_TYPE_IPV4;
|
|
|
+ addr.ipv4.ip = ip;
|
|
|
+ addr.ipv4.port = port;
|
|
|
+ return addr;
|
|
|
}
|
|
|
|
|
|
-void BAddr_InitIPv6 (BAddr *addr, uint8_t *ip, uint16_t port)
|
|
|
+BAddr BAddr_MakeIPv6 (const uint8_t *ip, uint16_t port)
|
|
|
{
|
|
|
- addr->type = BADDR_TYPE_IPV6;
|
|
|
- memcpy(addr->ipv6.ip, ip, 16);
|
|
|
- addr->ipv6.port = port;
|
|
|
+ BAddr addr;
|
|
|
+ addr.type = BADDR_TYPE_IPV6;
|
|
|
+ memcpy(addr.ipv6.ip, ip, 16);
|
|
|
+ addr.ipv6.port = port;
|
|
|
+ return addr;
|
|
|
}
|
|
|
|
|
|
-void BAddr_InitFromIpaddrAndPort (BAddr *addr, BIPAddr ipaddr, uint16_t port)
|
|
|
+BAddr BAddr_MakeFromIpaddrAndPort (BIPAddr ipaddr, uint16_t port)
|
|
|
{
|
|
|
BIPAddr_Assert(&ipaddr);
|
|
|
|
|
|
switch (ipaddr.type) {
|
|
|
case BADDR_TYPE_NONE:
|
|
|
- BAddr_InitNone(addr);
|
|
|
- break;
|
|
|
+ return BAddr_MakeNone();
|
|
|
case BADDR_TYPE_IPV4:
|
|
|
- BAddr_InitIPv4(addr, ipaddr.ipv4, port);
|
|
|
- break;
|
|
|
+ return BAddr_MakeIPv4(ipaddr.ipv4, port);
|
|
|
case BADDR_TYPE_IPV6:
|
|
|
- BAddr_InitIPv6(addr, ipaddr.ipv6, port);
|
|
|
- break;
|
|
|
- default: ASSERT(0);
|
|
|
+ return BAddr_MakeIPv6(ipaddr.ipv6, port);
|
|
|
+ default:
|
|
|
+ ASSERT(0);
|
|
|
+ return BAddr_MakeNone();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+void BAddr_InitNone (BAddr *addr)
|
|
|
+{
|
|
|
+ *addr = BAddr_MakeNone();
|
|
|
+}
|
|
|
+
|
|
|
+void BAddr_InitIPv4 (BAddr *addr, uint32_t ip, uint16_t port)
|
|
|
+{
|
|
|
+ *addr = BAddr_MakeIPv4(ip, port);
|
|
|
+}
|
|
|
+
|
|
|
+void BAddr_InitIPv6 (BAddr *addr, uint8_t *ip, uint16_t port)
|
|
|
+{
|
|
|
+ *addr = BAddr_MakeIPv6(ip, port);
|
|
|
+}
|
|
|
+
|
|
|
+void BAddr_InitFromIpaddrAndPort (BAddr *addr, BIPAddr ipaddr, uint16_t port)
|
|
|
+{
|
|
|
+ BIPAddr_Assert(&ipaddr);
|
|
|
+
|
|
|
+ *addr = BAddr_MakeFromIpaddrAndPort(ipaddr, port);
|
|
|
+}
|
|
|
+
|
|
|
#ifdef BADVPN_LINUX
|
|
|
|
|
|
void BAddr_InitPacket (BAddr *addr, uint16_t phys_proto, int interface_index, int header_type, int packet_type, uint8_t *phys_addr)
|