|
libnl 1.1
|
General | |
| struct nl_data * | nl_data_alloc (void *buf, size_t size) |
| Allocate a new abstract data object. | |
| struct nl_data * | nl_data_clone (struct nl_data *src) |
| Clone an abstract data object. | |
| int | nl_data_append (struct nl_data *data, void *buf, size_t size) |
| Append data to an abstract data object. | |
| void | nl_data_free (struct nl_data *data) |
| Free an abstract data object. | |
Attribute Access | |
| void * | nl_data_get (struct nl_data *data) |
| Get data buffer of abstract data object. | |
| size_t | nl_data_get_size (struct nl_data *data) |
| Get size of data buffer of abstract data object. | |
Misc | |
| int | nl_data_cmp (struct nl_data *a, struct nl_data *b) |
| Compare two abstract data objects. | |
| struct nl_data* nl_data_alloc | ( | void * | buf, |
| size_t | size | ||
| ) | [read] |
| buf | Data buffer containing the actual data. |
| size | Size of data buffer. |
Allocates a new abstract data and copies the specified data buffer into the new handle.
Definition at line 38 of file data.c.
Referenced by nl_data_clone(), and nla_get_data().
{
struct nl_data *data;
data = calloc(1, sizeof(*data));
if (!data)
goto errout;
data->d_data = calloc(1, size);
if (!data->d_data) {
free(data);
goto errout;
}
data->d_size = size;
if (buf)
memcpy(data->d_data, buf, size);
return data;
errout:
nl_errno(ENOMEM);
return NULL;
}
| struct nl_data* nl_data_clone | ( | struct nl_data * | src | ) | [read] |
| src | Abstract data object |
Definition at line 69 of file data.c.
References nl_data_alloc().
{
return nl_data_alloc(src->d_data, src->d_size);
}
| int nl_data_append | ( | struct nl_data * | data, |
| void * | buf, | ||
| size_t | size | ||
| ) |
| data | Abstract data object. |
| buf | Data buffer containing the data to be appended. |
| size | Size of data to be apppended. |
Reallocates an abstract data and copies the specified data buffer into the new handle.
Definition at line 85 of file data.c.
Referenced by rtnl_u32_add_key().
{
if (size < 0)
BUG();
if (size > 0) {
data->d_data = realloc(data->d_data, data->d_size + size);
if (!data->d_data)
return nl_errno(ENOMEM);
if (buf)
memcpy(data->d_data + data->d_size, buf, size);
else
memset(data->d_data + data->d_size, 0, size);
data->d_size += size;
}
return 0;
}
| void nl_data_free | ( | struct nl_data * | data | ) |
| void* nl_data_get | ( | struct nl_data * | data | ) |
| data | Abstract data object. |
Definition at line 130 of file data.c.
Referenced by nl_data_cmp(), and nla_put_data().
{
return data->d_size > 0 ? data->d_data : NULL;
}
| size_t nl_data_get_size | ( | struct nl_data * | data | ) |
| data | Abstract data object. |
Definition at line 140 of file data.c.
Referenced by nl_data_cmp(), and nla_put_data().
{
return data->d_size;
}
| int nl_data_cmp | ( | struct nl_data * | a, |
| struct nl_data * | b | ||
| ) |
| a | Abstract data object. |
| b | Another abstract data object. |
Definition at line 160 of file data.c.
References nl_data_get(), and nl_data_get_size().
{
void *a_ = nl_data_get(a);
void *b_ = nl_data_get(b);
if (a_ && b_)
return memcmp(a_, b_, nl_data_get_size(a));
else
return -1;
}
1.7.3