~ubuntu-branches/ubuntu/jaunty/libdumbnet/jaunty

« back to all changes in this revision

Viewing changes to src/ip-cooked.c

  • Committer: Bazaar Package Importer
  • Author(s): Javier Fernandez-Sanguino Pen~a
  • Date: 2005-01-11 16:13:41 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20050111161341-0a1we1xe03mnd2a1
Tags: 1.8-1.3
Fixed SONAME problem by fixing the -version-info number in
src/Makefile.am (Closes: #289777)

Show diffs side-by-side

added added

removed removed

Lines of Context:
3
3
 *
4
4
 * Copyright (c) 2001 Dug Song <dugsong@monkey.org>
5
5
 *
6
 
 * $Id: ip-cooked.c,v 1.14 2003/03/21 04:03:05 dugsong Exp $
 
6
 * $Id: ip-cooked.c,v 1.16 2004/05/04 03:19:43 dugsong Exp $
7
7
 */
8
8
 
9
9
#include "config.h"
10
10
 
11
 
#ifndef WIN32
 
11
#ifndef _WIN32
12
12
#include <netinet/in.h>
13
13
#include <unistd.h>
14
14
#endif
69
69
{
70
70
        ip_t *ip;
71
71
 
72
 
        if ((ip = calloc(1, sizeof(*ip))) == NULL)
73
 
                return (NULL);
74
 
 
75
 
        if ((ip->arp = arp_open()) == NULL ||
76
 
            (ip->intf = intf_open()) == NULL ||
77
 
            (ip->route = route_open()) == NULL)
78
 
                return (ip_close(ip));
79
 
 
80
 
        if ((ip->fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
81
 
                return (ip_close(ip));
82
 
 
83
 
        memset(&ip->sin, 0, sizeof(ip->sin));
84
 
        ip->sin.sin_family = AF_INET;
85
 
        ip->sin.sin_port = htons(666);
86
 
        
87
 
        LIST_INIT(&ip->ip_intf_list);
88
 
 
89
 
        if (intf_loop(ip->intf, _add_ip_intf, ip) != 0)
90
 
                return (ip_close(ip));
91
 
        
 
72
        if ((ip = calloc(1, sizeof(*ip))) != NULL) {
 
73
                ip->fd = -1;
 
74
                
 
75
                if ((ip->arp = arp_open()) == NULL ||
 
76
                    (ip->intf = intf_open()) == NULL ||
 
77
                    (ip->route = route_open()) == NULL)
 
78
                        return (ip_close(ip));
 
79
                
 
80
                if ((ip->fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
 
81
                        return (ip_close(ip));
 
82
 
 
83
                memset(&ip->sin, 0, sizeof(ip->sin));
 
84
                ip->sin.sin_family = AF_INET;
 
85
                ip->sin.sin_port = htons(666);
 
86
                
 
87
                LIST_INIT(&ip->ip_intf_list);
 
88
 
 
89
                if (intf_loop(ip->intf, _add_ip_intf, ip) != 0)
 
90
                        return (ip_close(ip));
 
91
        }
92
92
        return (ip);
93
93
}
94
94
 
223
223
ip_close(ip_t *ip)
224
224
{
225
225
        struct ip_intf *ipi, *nxt;
226
 
        
227
 
        for (ipi = LIST_FIRST(&ip->ip_intf_list);
228
 
            ipi != LIST_END(&ip->ip_intf_list); ipi = nxt) {
229
 
                nxt = LIST_NEXT(ipi, next);
230
 
                if (ipi->eth != NULL)
231
 
                        eth_close(ipi->eth);
232
 
                free(ipi);
 
226
 
 
227
        if (ip != NULL) {
 
228
                for (ipi = LIST_FIRST(&ip->ip_intf_list);
 
229
                    ipi != LIST_END(&ip->ip_intf_list); ipi = nxt) {
 
230
                        nxt = LIST_NEXT(ipi, next);
 
231
                        if (ipi->eth != NULL)
 
232
                                eth_close(ipi->eth);
 
233
                        free(ipi);
 
234
                }
 
235
                if (ip->fd >= 0)
 
236
                        close(ip->fd);
 
237
                if (ip->route != NULL)
 
238
                        route_close(ip->route);
 
239
                if (ip->intf != NULL)
 
240
                        intf_close(ip->intf);
 
241
                if (ip->arp != NULL)
 
242
                        arp_close(ip->arp);
 
243
                free(ip);
233
244
        }
234
 
        if (ip->fd > 0)         close(ip->fd);
235
 
        if (ip->route != NULL)  route_close(ip->route);
236
 
        if (ip->intf != NULL)   intf_close(ip->intf);
237
 
        if (ip->arp != NULL)    arp_close(ip->arp);
238
 
        free(ip);
239
 
        
240
245
        return (NULL);
241
246
}