~kvalo/connman/bug-734339

« back to all changes in this revision

Viewing changes to plugins/ethernet.c

  • Committer: Bazaar Package Importer
  • Author(s): Mathieu Trudel
  • Date: 2010-02-12 10:08:03 UTC
  • mfrom: (1.1.8 upstream) (0.1.5 sid)
  • Revision ID: james.westby@ubuntu.com-20100212100803-s8iaj8g1dmgwm2uz
Tags: 0.48+dfsg-2
* Ubuntu/Debian sync upload
* Re-add missing changes from 0.45+dfsg that made it only in Ubuntu:
  - ship development parts in a connman-dev package (Closes: 546616)
    - add debian/connman-dev.install
    - update debian/control
* Update long descriptions for connman and connman-dev
  - update debian/control
* Add missing Depends on libglib2.0-dev, libdbus-1-dev for connman-dev
  - update debian/control
* Don't run bootstrap twice during build.
  - update debian/rules
* Remove old configure option: enable-ppp, with-pppd, enable-novatel,
  enable-huawei and enable-modemmgr are no longer recognized.
  - update debian/rules

Show diffs side-by-side

added added

removed removed

Lines of Context:
43
43
        int index;
44
44
        unsigned flags;
45
45
        unsigned int watch;
46
 
};
 
46
        struct connman_network *network;
 
47
};
 
48
 
 
49
static int cable_probe(struct connman_network *network)
 
50
{
 
51
        DBG("network %p", network);
 
52
 
 
53
        return 0;
 
54
}
 
55
 
 
56
static void cable_remove(struct connman_network *network)
 
57
{
 
58
        DBG("network %p", network);
 
59
}
 
60
 
 
61
static int cable_connect(struct connman_network *network)
 
62
{
 
63
        DBG("network %p", network);
 
64
 
 
65
        return 0;
 
66
}
 
67
 
 
68
static int cable_disconnect(struct connman_network *network)
 
69
{
 
70
        DBG("network %p", network);
 
71
 
 
72
        return 0;
 
73
}
 
74
 
 
75
static struct connman_network_driver cable_driver = {
 
76
        .name           = "cable",
 
77
        .type           = CONNMAN_NETWORK_TYPE_ETHERNET,
 
78
        .probe          = cable_probe,
 
79
        .remove         = cable_remove,
 
80
        .connect        = cable_connect,
 
81
        .disconnect     = cable_disconnect,
 
82
};
 
83
 
 
84
static void add_network(struct connman_device *device)
 
85
{
 
86
        struct connman_network *network;
 
87
        int index;
 
88
 
 
89
        network = connman_network_create("carrier",
 
90
                                        CONNMAN_NETWORK_TYPE_ETHERNET);
 
91
        if (network == NULL)
 
92
                return;
 
93
 
 
94
        index = connman_device_get_index(device);
 
95
        connman_network_set_index(network, index);
 
96
 
 
97
        connman_network_set_name(network, "Wired");
 
98
        connman_network_set_protocol(network, CONNMAN_NETWORK_PROTOCOL_IP);
 
99
 
 
100
        if (connman_device_add_network(device, network) < 0) {
 
101
                connman_network_unref(network);
 
102
                return;
 
103
        }
 
104
 
 
105
        connman_network_set_available(network, TRUE);
 
106
 
 
107
        connman_network_set_group(network, "cable");
 
108
 
 
109
        connman_network_set_method(network, CONNMAN_IPCONFIG_METHOD_DHCP);
 
110
 
 
111
        connman_network_set_connected(network, TRUE);
 
112
}
47
113
 
48
114
static void ethernet_newlink(unsigned flags, unsigned change, void *user_data)
49
115
{
65
131
        if ((ethernet->flags & IFF_LOWER_UP) != (flags & IFF_LOWER_UP)) {
66
132
                if (flags & IFF_LOWER_UP) {
67
133
                        DBG("carrier on");
68
 
                        connman_device_set_carrier(device, TRUE);
 
134
                        add_network(device);
69
135
                } else {
70
136
                        DBG("carrier off");
71
 
                        connman_device_set_carrier(device, FALSE);
 
137
                        connman_device_remove_all_networks(device);
72
138
                }
73
139
        }
74
140
 
106
172
 
107
173
        connman_rtnl_remove_watch(ethernet->watch);
108
174
 
 
175
        connman_device_remove_all_networks(device);
 
176
 
109
177
        g_free(ethernet);
110
178
}
111
179
 
127
195
        return connman_inet_ifdown(ethernet->index);
128
196
}
129
197
 
130
 
static int ethernet_connect(struct connman_device *device)
131
 
{
132
 
        struct ethernet_data *ethernet = connman_device_get_data(device);
133
 
 
134
 
        DBG("device %p", device);
135
 
 
136
 
        if (!(ethernet->flags & IFF_LOWER_UP))
137
 
                return -ENOTCONN;
138
 
 
139
 
        return connman_device_set_connected(device, TRUE);
140
 
}
141
 
 
142
 
static int ethernet_disconnect(struct connman_device *device)
143
 
{
144
 
        struct ethernet_data *ethernet = connman_device_get_data(device);
145
 
 
146
 
        DBG("device %p", device);
147
 
 
148
 
        if (!(ethernet->flags & IFF_LOWER_UP))
149
 
                return -ENOTCONN;
150
 
 
151
 
        return connman_device_set_connected(device, FALSE);
152
 
}
153
 
 
154
198
static struct connman_device_driver ethernet_driver = {
155
199
        .name           = "ethernet",
156
200
        .type           = CONNMAN_DEVICE_TYPE_ETHERNET,
158
202
        .remove         = ethernet_remove,
159
203
        .enable         = ethernet_enable,
160
204
        .disable        = ethernet_disable,
161
 
        .connect        = ethernet_connect,
162
 
        .disconnect     = ethernet_disconnect,
163
205
};
164
206
 
165
207
static int ethernet_init(void)
166
208
{
167
 
        return connman_device_driver_register(&ethernet_driver);
 
209
        int err;
 
210
 
 
211
        err = connman_network_driver_register(&cable_driver);
 
212
        if (err < 0)
 
213
                return err;
 
214
 
 
215
        err = connman_device_driver_register(&ethernet_driver);
 
216
        if (err < 0) {
 
217
                connman_network_driver_unregister(&cable_driver);
 
218
                return err;
 
219
        }
 
220
 
 
221
        return 0;
168
222
}
169
223
 
170
224
static void ethernet_exit(void)
171
225
{
 
226
        connman_network_driver_unregister(&cable_driver);
 
227
 
172
228
        connman_device_driver_unregister(&ethernet_driver);
173
229
}
174
230