99d5e52b90
forwarding to dynamically route multicast traffic. Routing is done by defining an "upstream" interface on which the daemon acts as a normal Multicast client, and one or more "downstream" interfaces that serves clients on the destination networks. This is useful in situations where other dynamic multicast routers cannot be used. from markus with small adjustments. ok markus
42 lines
1.3 KiB
Plaintext
42 lines
1.3 KiB
Plaintext
$OpenBSD: patch-config_c,v 1.1.1.1 2008/02/08 19:30:52 sthen Exp $
|
|
--- config.c.orig Tue May 24 16:49:29 2005
|
|
+++ config.c Fri Jan 25 14:05:44 2008
|
|
@@ -328,29 +328,18 @@ struct vifconfig *parsePhyintToken() {
|
|
*/
|
|
struct SubnetList *parseSubnetAddress(char *addrstr) {
|
|
struct SubnetList *tmpSubnet;
|
|
- char *tmpStr;
|
|
uint32 addr = 0x00000000;
|
|
uint32 mask = 0xFFFFFFFF;
|
|
+ int bitcnt;
|
|
|
|
- // First get the network part of the address...
|
|
- tmpStr = strtok(addrstr, "/");
|
|
- addr = inet_addr(tmpStr);
|
|
-
|
|
- tmpStr = strtok(NULL, "/");
|
|
- if(tmpStr != NULL) {
|
|
- int bitcnt = atoi(tmpStr);
|
|
- if(bitcnt <= 0 || bitcnt > 32) {
|
|
- log(LOG_WARNING, 0, "The bits part of the address is invalid : %d.",tmpStr);
|
|
- return NULL;
|
|
- }
|
|
-
|
|
- mask <<= (32 - bitcnt);
|
|
- }
|
|
-
|
|
- if(addr == -1 || addr == 0) {
|
|
- log(LOG_WARNING, 0, "Unable to parse address token '%s'.", addrstr);
|
|
+ bitcnt = inet_net_pton(AF_INET, addrstr, &addr, sizeof(addr));
|
|
+ if(bitcnt<0) {
|
|
+ log(LOG_WARNING, 0, "Unable to parse address token '%s'.",addrstr);
|
|
return NULL;
|
|
- }
|
|
+ } else if(bitcnt>0)
|
|
+ mask <<= (32 - bitcnt);
|
|
+ else
|
|
+ mask = 0;
|
|
|
|
tmpSubnet = (struct SubnetList*) malloc(sizeof(struct SubnetList));
|
|
tmpSubnet->subnet_addr = addr;
|