1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
|
/*
*
* Connection Manager
*
* Copyright (C) 2007-2009 Intel Corporation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*/
#ifndef __CONNMAN_ELEMENT_H
#define __CONNMAN_ELEMENT_H
#ifdef __cplusplus
extern "C" {
#endif
#include <errno.h>
#include <glib.h>
#include <connman/property.h>
#include <connman/types.h>
#include <connman/ipconfig.h>
/**
* SECTION:element
* @title: Element premitives
* @short_description: Functions for handling elements
*/
enum connman_element_type {
CONNMAN_ELEMENT_TYPE_UNKNOWN = 0,
CONNMAN_ELEMENT_TYPE_ROOT = 1,
CONNMAN_ELEMENT_TYPE_PROFILE = 2,
CONNMAN_ELEMENT_TYPE_DEVICE = 3,
CONNMAN_ELEMENT_TYPE_NETWORK = 4,
CONNMAN_ELEMENT_TYPE_SERVICE = 5,
CONNMAN_ELEMENT_TYPE_IPV4 = 7,
CONNMAN_ELEMENT_TYPE_IPV6 = 8,
CONNMAN_ELEMENT_TYPE_DHCP = 9,
CONNMAN_ELEMENT_TYPE_BOOTP = 10,
CONNMAN_ELEMENT_TYPE_ZEROCONF = 11,
CONNMAN_ELEMENT_TYPE_CONNECTION = 42,
CONNMAN_ELEMENT_TYPE_VENDOR = 10000,
};
enum connman_element_state {
CONNMAN_ELEMENT_STATE_UNKNOWN = 0,
CONNMAN_ELEMENT_STATE_ERROR = 1,
CONNMAN_ELEMENT_STATE_IDLE = 2,
CONNMAN_ELEMENT_STATE_DONE = 3,
};
enum connman_element_error {
CONNMAN_ELEMENT_ERROR_UNKNOWN = 0,
CONNMAN_ELEMENT_ERROR_FAILED = 1,
CONNMAN_ELEMENT_ERROR_DHCP_FAILED = 2,
CONNMAN_ELEMENT_ERROR_CONNECT_FAILED = 3,
};
struct connman_driver;
struct connman_element {
gint refcount;
gint index;
gchar *name;
gchar *path;
enum connman_element_type type;
enum connman_element_state state;
enum connman_element_error error;
gboolean enabled;
gboolean configuring;
gchar *devname;
struct connman_element *parent;
struct connman_driver *driver;
void *driver_data;
void (*destruct) (struct connman_element *element);
union {
void *private;
struct connman_device *device;
struct connman_network *network;
};
GHashTable *properties;
struct {
enum connman_ipconfig_method method;
gchar *address;
gchar *netmask;
gchar *gateway;
gchar *network;
gchar *broadcast;
gchar *nameserver;
gchar *timeserver;
} ipv4;
};
struct connman_element *connman_element_create(const char *name);
struct connman_element *connman_element_ref(struct connman_element *element);
void connman_element_unref(struct connman_element *element);
int connman_element_get_value(struct connman_element *element,
enum connman_property_id id, void *value);
int connman_element_set_string(struct connman_element *element,
const char *key, const char *value);
const char *connman_element_get_string(struct connman_element *element,
const char *key);
int connman_element_set_bool(struct connman_element *element,
const char *key, connman_bool_t value);
connman_bool_t connman_element_get_bool(struct connman_element *element,
const char *key);
int connman_element_set_uint8(struct connman_element *element,
const char *key, connman_uint8_t value);
connman_uint8_t connman_element_get_uint8(struct connman_element *element,
const char *key);
int connman_element_set_blob(struct connman_element *element,
const char *key, const void *data, unsigned int size);
const void *connman_element_get_blob(struct connman_element *element,
const char *key, unsigned int *size);
int connman_element_register(struct connman_element *element,
struct connman_element *parent);
void connman_element_unregister(struct connman_element *element);
void connman_element_unregister_children(struct connman_element *element);
void connman_element_update(struct connman_element *element);
int connman_element_set_enabled(struct connman_element *element,
gboolean enabled);
void connman_element_set_error(struct connman_element *element,
enum connman_element_error error);
static inline void *connman_element_get_data(struct connman_element *element)
{
return element->driver_data;
}
static inline void connman_element_set_data(struct connman_element *element,
void *data)
{
element->driver_data = data;
}
#ifdef __cplusplus
}
#endif
#endif /* __CONNMAN_ELEMENT_H */
|