Dear all,
Does anyone have any objections for the patch below? It allows for
disabling DHCP for scope and/or DA discovery on networks that don't use
this mechanism.
By the way, while I was working on this, I noticed a few things:
* The DHCP mechanism doesn't work when there's already a dhcp client
process running (at least on a Linux system). dhcpCreateBCSkt() in
openslp/common/slp_dhcp.c can't bind to the 'IPPORT_BOOTPC' port in that
case, without any notifications.
* The DHCP mechanism should handle all used network interfaces
separately. Now the request is sent from 'INADDR_ANY', causing only one
(OS chosen) interface to be used.
* I wondered why KnownDARefreshCache() in
openslp/libslp/libslp_knownda.c stops as soon as any of the discover
mechanisms does actually find anything. The other mechanisms are not
called then anymore.
BR,
Roel
Index: openslp/libslp/libslp_knownda.c
===================================================================
--- openslp/libslp/libslp_knownda.c (revision 1650)
+++ openslp/libslp/libslp_knownda.c (working copy)
@@ -677,7 +677,8 @@
/* discover DAs */
if(KnownDADiscoverFromIPC(handle) == 0)
if(KnownDADiscoverFromProperties(scopelistlen, scopelist, handle)
== 0)
- if(KnownDADiscoverFromDHCP(handle) == 0)
+ if (! SLPPropertyAsBoolean(SLPGetProperty("net.slp.useDHCP"))
+ || KnownDADiscoverFromDHCP(handle) == 0)
KnownDADiscoverFromMulticast(scopelistlen, scopelist,
handle);
return SLP_TRUE;
}
@@ -889,7 +890,8 @@
/* Discover all DAs. */
if (KnownDADiscoverFromIPC(handle) == 0)
{
- KnownDADiscoverFromDHCP(handle);
+ if (SLPPropertyAsBoolean(SLPGetProperty("net.slp.useDHCP")))
+ KnownDADiscoverFromDHCP(handle);
KnownDADiscoverFromProperties(0,"", handle);
KnownDADiscoverFromMulticast(0,"", handle);
}
@@ -976,7 +978,8 @@
/* Discover all DAs. */
if (KnownDADiscoverFromIPC(handle) == 0)
{
- KnownDADiscoverFromDHCP(handle);
+ if (SLPPropertyAsBoolean(SLPGetProperty("net.slp.useDHCP")))
+ KnownDADiscoverFromDHCP(handle);
KnownDADiscoverFromProperties(0,"", handle);
KnownDADiscoverFromMulticast(0,"", handle);
}
Index: openslp/common/slp_property.c
===================================================================
--- openslp/common/slp_property.c (revision 1650)
+++ openslp/common/slp_property.c (working copy)
@@ -165,6 +165,7 @@
{"net.slp.checkSourceAddr", "true", 0},
{"net.slp.broadcastAddr", "255.255.255.255", 0},
{"net.slp.port", "427", 0},
+ {"net.slp.useDHCP", "true", 0},
/* Additional properties that are specific to IPv6 */
{"net.slp.useIPv6", "false", 0},
Index: openslp/slpd/slpd_property.c
===================================================================
--- openslp/slpd/slpd_property.c (revision 1650)
+++ openslp/slpd/slpd_property.c (working copy)
@@ -139,6 +139,7 @@
G_SlpdProperty.DAHeartBeat = SLPD_AGE_INTERVAL;
G_SlpdProperty.port = (uint16_t)SLPPropertyAsInteger("net.slp.port");
+ G_SlpdProperty.useDHCP = SLPPropertyAsBoolean("net.slp.useDHCP");
/* set the net.slp.interfaces property */
if (SLPNetIsIPV4()&& SLPNetIsIPV6())
Index: openslp/slpd/slpd_property.h
===================================================================
--- openslp/slpd/slpd_property.h (revision 1650)
+++ openslp/slpd/slpd_property.h (working copy)
@@ -113,6 +113,7 @@
int DAHeartBeat;
int appendLog;
int MTU;
+ int useDHCP;
} SLPDProperty;
extern SLPDProperty G_SlpdProperty;
Index: openslp/slpd/slpd_knownda.c
===================================================================
--- openslp/slpd/slpd_knownda.c (revision 1650)
+++ openslp/slpd/slpd_knownda.c (working copy)
@@ -685,7 +685,8 @@
/*-----------------------------------------------------------------*/
/* Discover DHCP DA's and add them to the active discovery list. */
/*-----------------------------------------------------------------*/
- SLPDKnownDAFromDHCP();
+ if (G_SlpdProperty.useDHCP)
+ SLPDKnownDAFromDHCP();
/*------------------------------------------------------------------*/
/* Generate the list of our URLs */
Index: openslp/etc/slp.conf
===================================================================
--- openslp/etc/slp.conf (revision 1650)
+++ openslp/etc/slp.conf (working copy)
@@ -168,6 +168,10 @@
# listening port will break compliance with RFC2608. (Default is 427).
;net.slp.port = 427
+# A boolean indicating whether DHCP should be used for DA discovery and/or
+# scope discovery. (Default setting is true).
+;net.slp.useDHCP = true
+
#----------------------------------------------------------------------------
# Security
#----------------------------------------------------------------------------
------------------------------------------------------------------------------
Centralized Desktop Delivery: Dell and VMware Reference Architecture
Simplifying enterprise desktop deployment and management using
Dell EqualLogic storage and VMware View: A highly scalable, end-to-end
client virtualization framework. Read more!
http://p.sf.net/sfu/dell-eql-dev2dev
_______________________________________________
Openslp-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openslp-devel