Re: Diald in Linux 2.1.72 -- The Saga Continues

Shaw Carruthers (shaw@shawc.demon.co.uk)
Sat, 20 Dec 1997 22:05:44 +0000 (GMT)


On Sat, 20 Dec 1997, Gary Lawrence Murphy wrote:

>
>
> The only warning I now receive is the message
>
> Dec 20 11:30:03 maya kernel: diald uses obsolete (AF_INET,SOCK_PACKET)
>

You might like to try the this patch which seems to solve the problem for
me.

--
diff -u diald-0.16.dist/ppp.c diald-0.16/ppp.c
--- diald-0.16.dist/ppp.c	Mon Dec 15 22:46:24 1997
+++ diald-0.16/ppp.c	Thu Dec 18 16:24:22 1997
@@ -122,6 +122,7 @@
 int ppp_set_addrs()
 {
     ulong laddr = 0, raddr = 0;
+    int sockfd;
 
     /* Try to get the interface number if we don't know it yet. */
     if (link_iface == -1) {
@@ -140,6 +141,12 @@
 	SET_SA_FAMILY (ifr.ifr_dstaddr, AF_INET); 
 	SET_SA_FAMILY (ifr.ifr_netmask, AF_INET); 
 	sprintf(ifr.ifr_name,"ppp%d",link_iface);
+	sockfd = socket(AF_INET, SOCK_DGRAM, 0);
+ 	if (sockfd < 0)
+       		{
+               		syslog(LOG_ERR, "Couldn't create IP socket in ppp.c: %m");
+                       die(1);
+        }
 	if (ioctl(snoopfd, SIOCGIFFLAGS, (caddr_t) &ifr) == -1) {
 	   syslog(LOG_ERR,"failed to read ppp interface status");
 	   return 0;
@@ -156,12 +163,12 @@
 	}
 
 	/* Ok, the interface is up, grab the addresses. */
-	if (ioctl(snoopfd, SIOCGIFADDR, (caddr_t) &ifr) == -1)
+	if (ioctl(sockfd, SIOCGIFADDR, (caddr_t) &ifr) == -1)
 		syslog(LOG_ERR,"failed to get ppp local address: %m");
 	else
        	    laddr = ((struct sockaddr_in *) &ifr.ifr_addr)->sin_addr.s_addr;
 
-	if (ioctl(snoopfd, SIOCGIFDSTADDR, (caddr_t) &ifr) == -1) 
+	if (ioctl(sockfd, SIOCGIFDSTADDR, (caddr_t) &ifr) == -1) 
 	   syslog(LOG_ERR,"failed to get ppp remote address: %m");
 	else
 	   raddr = ((struct sockaddr_in *) &ifr.ifr_addr)->sin_addr.s_addr;
@@ -181,7 +188,7 @@
 	        proxy_config(orig_local_ip,orig_remote_ip);
 	    }
 	}
-
+	close (sockfd);
 	if (dynamic_addrs) {
 	    /* only do the configuration in dynamic mode. */
 	    struct in_addr addr;
@@ -207,10 +214,11 @@
 	/* This is redundant in normal operation, but if we
 	 * have to restart the link, then this is necessary...
 	 */
-	set_ptp("ppp",link_iface,remote_ip,0);
+	 /* set_ptp("ppp",link_iface,remote_ip,0); */
 
 	if (do_reroute)
 	     add_routes("ppp",link_iface,local_ip,remote_ip,0);
+	     del_routes("sl",proxy_iface,orig_local_ip,orig_remote_ip,0);
 	return 1;
     }
     return 0;
diff -u diald-0.16.dist/version.h diald-0.16/version.h
--- diald-0.16.dist/version.h	Mon Dec 15 22:46:24 1997
+++ diald-0.16/version.h	Thu Dec 18 15:45:16 1997
@@ -1 +1 @@
-#define VERSION "0.16.4"
+#define VERSION "0.16.4a"

--
Shaw Carruthers - shaw@shawc.demon.co.uk
London SW14 7JW UK
This is not a sig( with homage to Magritte).