On 11/15/2010 05:16 PM, John Calcote wrote:
> Roel,
>
> Yes, I wrote the DHCP client in openslp a long time ago - really before
> I knew enough to do a good job. I've long known about the port conflict
> issue you mentioned. The right way to do this is to have openslp use the
> DHCP dbus channel to gather DHCP data on linux, and to use the microsoft
> DHCP client interface on windows.
>
> I heartily approve of your change that allows DHCP to be disabled. I
> don't have time to put it in for you, but perhaps one of the other
> maintainers... ??
John, thanks for your approval  and comments. Since I have svn write 
access myself, actually getting this patch in the repo is not much of an 
issue.

BR,
     Roel
> My two cents,
> John
>
> On 11/15/2010 01:44 AM, Roel van de Kraats wrote:
>> 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
>> Openslp-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/openslp-devel


------------------------------------------------------------------------------
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
Openslp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openslp-devel

Reply via email to