[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-bugs-dist
Subject:    Bug#24996: [PATCH] Bunch'o Solaris fixes in kdenetwork/lanbrowsing/lisa
From:       Rob Napier <rnapier () employees ! org>
Date:       2001-04-30 14:11:06
[Download RAW message or body]

Package: kdenetwork
Version: CVS

Whole bunch of problems in kdenetwork/lanbrowsing/lisa. Pleae look
this one over carefully. I do a lot of typecasting to make things
work. There are three basic problems:

   * There is no inet_aton on Solaris. Use inet_addr.
   * There is in INADDR_NONE on Solaris. I added a configure test to
        define it (note the new
	kdenetwork/lanbrowsing/lisa/configure.in.in that is also
        attached)
   * The forth parameter of setsockopt is void* on linux and int* on
        Solaris. I added (void*) casting to fix this (see my other
        patch earlier today).

Thanks,
Rob

? configure.in.in
Index: ipaddress.cpp
===================================================================
RCS file: /home/projects/kdecvs/cvsroot/kdenetwork/lanbrowsing/lisa/ipaddress.cpp,v
retrieving revision 1.2
diff -u -3 -p -r1.2 ipaddress.cpp
--- ipaddress.cpp	2001/02/15 00:33:33	1.2
+++ ipaddress.cpp	2001/04/25 20:11:08
@@ -70,16 +70,13 @@ MyString IPAddress::struct2String(struct
 
 unsigned int IPAddress::string2Int(MyString ip)
 {
-   struct in_addr addr;
-   inet_aton(ip.c_str(),&addr);
-//   cout<<addr.s_addr<<endl;
-   return ntohl(addr.s_addr);
+   return ntohl(inet_addr(ip.c_str()));
 };
 
 struct in_addr IPAddress::string2Struct(MyString ip)
 {
    struct in_addr tmp;
-   inet_aton(ip.c_str(),&tmp);
+   tmp.s_addr = inet_addr(ip.c_str());
    return tmp;
 };
 
Index: main.cpp
===================================================================
RCS file: /home/projects/kdecvs/cvsroot/kdenetwork/lanbrowsing/lisa/main.cpp,v
retrieving revision 1.4
diff -u -3 -p -r1.4 main.cpp
--- main.cpp	2001/02/15 00:33:33	1.4
+++ main.cpp	2001/04/25 20:11:08
@@ -231,8 +231,10 @@ int main(int argc, char** argv)
    };
    int bufferSize(60*1024);
    int on(1);
-   setsockopt(rawSocket,SOL_SOCKET,SO_RCVBUF,&bufferSize,sizeof(bufferSize));
-   int result=setsockopt(rawSocket, SOL_SOCKET, SO_BROADCAST,&on, sizeof(on));
+   setsockopt(rawSocket,SOL_SOCKET,SO_RCVBUF,(void *)&bufferSize,
+              sizeof(bufferSize));
+   int result=setsockopt(rawSocket, SOL_SOCKET, SO_BROADCAST,(void *)&on,
+                         sizeof(on));
    getDebug()<<"main(): setsockopt returns "<<result<<endl;
    //dropping root privileges
    //they will be regained once in the child process
Index: netmanager.cpp
===================================================================
RCS file: /home/projects/kdecvs/cvsroot/kdenetwork/lanbrowsing/lisa/netmanager.cpp,v
retrieving revision 1.5
diff -u -3 -p -r1.5 netmanager.cpp
--- netmanager.cpp	2001/02/15 00:33:33	1.5
+++ netmanager.cpp	2001/04/25 20:11:10
@@ -150,7 +150,8 @@ int NetManager::prepare()
       serverAddress.sin_port        = htons(m_basePort);
 
       int on(1);
-      result=setsockopt(m_listenFD, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
+      result=setsockopt(m_listenFD, SOL_SOCKET, SO_REUSEADDR, (void *)&on,
+                        sizeof(on));
       if (result!=0)
       {
          cout<<"NetManager::prepare: setsockopt(SO_REUSEADDR) failed"<<endl;
@@ -770,7 +771,8 @@ void NetManager::enableServerServer(int 
          return;
       };
       int on(1);
-      int result=setsockopt(m_bcFD, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
+      int result=setsockopt(m_bcFD, SOL_SOCKET, SO_REUSEADDR, (void *)&on,
+                            sizeof(on));
       if (result!=0)
       {
          getDebug()<<"NetManager::enableServerServer: setsockopt(SO_REUSEADDR) failed"<<endl;
@@ -818,7 +820,8 @@ int NetManager::findServerServer()
 
    int on(1);
    //this is actually the only socket which will send broacasts
-   int result=setsockopt(requestFD, SOL_SOCKET, SO_BROADCAST,&on, sizeof(on));
+   int result=setsockopt(requestFD, SOL_SOCKET, SO_BROADCAST, (void *)&on,
+                         sizeof(on));
    if (result!=0)
    {
       getDebug()<<"setsockopt(SO_BROADCAST) failed"<<endl;
@@ -836,7 +839,8 @@ int NetManager::findServerServer()
    };
    
    //since this socket will be bound, we have to set SO_REUSEADDR
-   result=setsockopt(answerFD, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
+   result=setsockopt(answerFD, SOL_SOCKET, SO_REUSEADDR, (void *)&on,
+                     sizeof(on));
    if (result!=0)
    {
       getDebug()<<"setsockopt(SO_REUSEADDR) failed"<<endl;
Index: netscanner.cpp
===================================================================
RCS file: /home/projects/kdecvs/cvsroot/kdenetwork/lanbrowsing/lisa/netscanner.cpp,v
retrieving revision 1.3
diff -u -3 -p -r1.3 netscanner.cpp
--- netscanner.cpp	2001/01/12 12:43:53	1.3
+++ netscanner.cpp	2001/04/25 20:11:11
@@ -426,7 +426,7 @@ void NetScanner::nmblookupScan(SimpleLis
          sscanf(tmpBuf,"%s *<00>\n",tmpIP);
          getDebug()<<"NetScanner::nmblookupScan: tmpIP: -"<<tmpIP<<"-"<<endl;
          struct sockaddr_in addr;
-         if (inet_aton(tmpIP,&addr.sin_addr))
+         if ((addr.sin_addr.s_addr = inet_addr(tmpIP)) != INADDR_NONE)
             if  (!hostAlreadyInList(addr.sin_addr.s_addr,newList))
             {
                if (validator.isValid(addr.sin_addr.s_addr))
@@ -482,7 +482,7 @@ void NetScanner::pingScan(SimpleList<Nod
    FD_SET(m_rawSocketFD,&clearSet);
    while(select(m_rawSocketFD,&clearSet,0,0,&tv1)>0)
    {
-      ::recvfrom(m_rawSocketFD,&receiveBuf,16*1024,0,0,0);
+      ::recvfrom(m_rawSocketFD,(void *)&receiveBuf,16*1024,0,0,0);
       tv1.tv_sec = 0;
       tv1.tv_usec = 0;
       FD_ZERO(&clearSet);
@@ -552,7 +552,7 @@ void NetScanner::pingScan(SimpleList<Nod
             //do
          {
             //getDebug()<<"** recvfrom...";
-            received=recvfrom(m_rawSocketFD,&receiveBuf,16*1024,0,(sockaddr*)&fromAddr,&length);
+            received=recvfrom(m_rawSocketFD,(void *)&receiveBuf,16*1024,0,(sockaddr*)&fromAddr,&length);
             //received=recvfrom(sockFD,&receiveBuf,1024,0,(sockaddr*)&fromAddr,&length);
             //getDebug()<<" done ****"<<endl;
             if (received!=-1)
Index: strictmain.cpp
===================================================================
RCS file: /home/projects/kdecvs/cvsroot/kdenetwork/lanbrowsing/lisa/strictmain.cpp,v
retrieving revision 1.3
diff -u -3 -p -r1.3 strictmain.cpp
--- strictmain.cpp	2001/01/12 12:43:53	1.3
+++ strictmain.cpp	2001/04/25 20:11:11
@@ -215,8 +215,10 @@ int main(int argc, char** argv)
    };
    int bufferSize(60*1024);
    int on(1);
-   setsockopt(rawSocket,SOL_SOCKET,SO_RCVBUF,&bufferSize,sizeof(bufferSize));
-   int result=setsockopt(rawSocket, SOL_SOCKET, SO_BROADCAST,&on, sizeof(on));
+   setsockopt(rawSocket,SOL_SOCKET,SO_RCVBUF,(void *)&bufferSize,
+              sizeof(bufferSize));
+   int result=setsockopt(rawSocket, SOL_SOCKET, SO_BROADCAST,(void *)&on,
+                         sizeof(on));
    getDebug()<<"main(): setsockopt returns "<<result<<endl;
    //dropping root privileges
    //they will be regained once in the child process

dnl Check for INADDR_NONE
AC_CACHE_CHECK( [for INADDR_NONE],ac_cv_decl_inaddr_none,[
   AC_EGREP_HEADER(INADDR_NONE, netinet/in.h,
      ac_cv_decl_inaddr_none="yes",
      ac_cv_decl_inaddr_none="no"
   )
])

if test $ac_cv_decl_inaddr_none = "no"; then
      AC_DEFINE(INADDR_NONE, (in_addr_t)-1, [inet_addr's error return])
fi

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic