/*
* Set the MTU and other parameters for the ppp device
*/
+ memset (&ifr, '\0', sizeof (ifr));
strncpy(ifr.ifr_name, ifname, sizeof (ifr.ifr_name));
ifr.ifr_mtu = mtu;
{
struct ppp_option_data data;
+ memset (&data, '\0', sizeof (data));
data.ptr = opt_ptr;
data.length = opt_len;
data.transmit = for_transmit;
{
struct ifreq ifr;
+ memset (&ifr, '\0', sizeof (ifr));
strncpy(ifr.ifr_name, ifname, sizeof (ifr.ifr_name));
if (ioctl(sockfd, SIOCGIFFLAGS, (caddr_t) &ifr) < 0)
{
{
struct ifreq ifr;
+ memset (&ifr, '\0', sizeof (ifr));
strncpy(ifr.ifr_name, ifname, sizeof (ifr.ifr_name));
if (ioctl(sockfd, SIOCGIFFLAGS, (caddr_t) &ifr) < 0)
{
struct ifreq ifr;
struct rtentry rt;
+ memset (&ifr, '\0', sizeof (ifr));
+ memset (&rt, '\0', sizeof (rt));
+
SET_SA_FAMILY (ifr.ifr_addr, AF_INET);
SET_SA_FAMILY (ifr.ifr_dstaddr, AF_INET);
SET_SA_FAMILY (ifr.ifr_netmask, AF_INET);
/*
* Add the device route
*/
- memset (&rt, '\0', sizeof (rt));
-
SET_SA_FAMILY (rt.rt_dst, AF_INET);
SET_SA_FAMILY (rt.rt_gateway, AF_INET);
rt.rt_dev = ifname; /* MJC */
- ((struct sockaddr_in *) &rt.rt_gateway)->sin_addr.s_addr = 0;
+ ((struct sockaddr_in *) &rt.rt_gateway)->sin_addr.s_addr = 0L;
((struct sockaddr_in *) &rt.rt_dst)->sin_addr.s_addr = his_adr;
rt.rt_flags = RTF_UP | RTF_HOST;
return 0;
}
+/*
+ * close_route_table - close the interface to the route table
+ */
+
+static void close_route_table (void)
+ {
+ if (route_fd != (FILE *) 0)
+ {
+ fclose (route_fd);
+ route_fd = (FILE *) 0;
+ }
+ }
+
/*
* open_route_table - open the interface to the route table
*/
{
char *path;
- if (route_fd != (FILE *) 0)
- {
- close_route_table();
- }
+ close_route_table();
path = path_to_route();
if (path == NULL)
return 1;
}
-/*
- * close_route_table - close the interface to the route table
- */
-
-static void close_route_table (void)
- {
- if (route_fd != (FILE *) 0)
- {
- fclose (route_fd);
- route_fd = (FILE *) 0;
- }
- }
-
/*
* read_route_table - read the next entry from the route table
*/
while (read_route_table(&rt) != 0)
{
- if (rt.rt_flags & RTF_UP == 0)
+ if ((rt.rt_flags & RTF_UP) == 0)
{
continue;
}
if (has_default_route)
{
+ memset (&rt, '\0', sizeof (rt));
SET_SA_FAMILY (rt.rt_dst, AF_INET);
SET_SA_FAMILY (rt.rt_gateway, AF_INET);
((struct sockaddr_in *) &rt.rt_gateway)->sin_addr.s_addr = gateway;
/*
* Now get the hardware address.
*/
-#if 0 /* old code */
- if (ioctl (sockfd, SIOCGIFHWADDR, &ifreq) < 0)
- {
- syslog(LOG_ERR, "SIOCGIFHWADDR(%s): %m", ifreq.ifr_name);
- return 0;
- }
-
- hwaddr->sa_family = ARPHRD_ETHER;
- memcpy (&hwaddr->sa_data, &ifreq.ifr_hwaddr.sa_data, ETH_ALEN);
-
- MAINDEBUG ((LOG_DEBUG,
- "proxy arp: found hwaddr %02x:%02x:%02x:%02x:%02x:%02x",
- (int) ((unsigned char *) &hwaddr->sa_data)[0],
- (int) ((unsigned char *) &hwaddr->sa_data)[1],
- (int) ((unsigned char *) &hwaddr->sa_data)[2],
- (int) ((unsigned char *) &hwaddr->sa_data)[3],
- (int) ((unsigned char *) &hwaddr->sa_data)[4],
- (int) ((unsigned char *) &hwaddr->sa_data)[5]));
-#else /* the 'proper' code */
memset (&ifreq.ifr_hwaddr, 0, sizeof (struct sockaddr));
if (ioctl (sockfd, SIOCGIFHWADDR, &ifreq) < 0)
{
(int) ((unsigned char *) &hwaddr->sa_data)[5],
(int) ((unsigned char *) &hwaddr->sa_data)[6],
(int) ((unsigned char *) &hwaddr->sa_data)[7]));
-#endif
return 1;
}
ok = ioctl (s, SIOCGIFHWADDR, (caddr_t) &ifr) >= 0;
}
- if (ok && ifr.ifr_hwaddr.sa_family != ARPHRD_PPP)
+ if (ok && ((ifr.ifr_hwaddr.sa_family & ~0xFF) != ARPHRD_PPP))
{
ok = 0;
}
break;
}
- if (n == 0)
+ /* See the process still exists. */
+ if (n > 0)
{
- unlink (lock_file);
- syslog (LOG_NOTICE, "Removed stale lock on %s", lock_file);
- continue;
+ hdb_lock_buffer[n] = '\0';
+ sscanf (hdb_lock_buffer, " %d", &pid);
+ if (kill(pid, 0) == -1 && errno == ESRCH)
+ {
+ n = 0;
+ }
}
- hdb_lock_buffer[n] = '\0';
- sscanf (hdb_lock_buffer, " %d", &pid);
-
- if (kill(pid, 0) == -1 && errno == ESRCH)
+ /* If the process does not exist then try to remove the lock */
+ if (n == 0 && unlink (lock_file) == 0)
{
- /* pid no longer exists - remove the lock file */
- if (unlink (lock_file) == 0)
- {
- syslog (LOG_NOTICE, "Removed stale lock on %s (pid %d)",
- dev, pid);
- continue;
- }
+ syslog (LOG_NOTICE, "Removed stale lock on %s (pid %d)",
+ dev, pid);
+ continue;
}
syslog (LOG_NOTICE, "Device %s is locked by pid %d", dev, pid);