diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2010-10-21 19:36:18 +0200 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2010-10-21 19:36:18 +0200 |
commit | 692cf6a6f6d8b658a8c4e4bca0d1c7998df35300 (patch) | |
tree | d505b4e2c06637a8040df68025eadffa1152ba6f /gatchat/gatrawip.c | |
parent | e74723776a833431bf54e4cdf3cb6ec3ad096bc5 (diff) | |
download | ofono-692cf6a6f6d8b658a8c4e4bca0d1c7998df35300.tar.bz2 |
gatchat: Add skeleton for GAtRawIP module
This adds the basic skeleton for a GAtRawIP support. It is only the
skeleton with its intended API. It has no raw IP support yet.
Diffstat (limited to 'gatchat/gatrawip.c')
-rw-r--r-- | gatchat/gatrawip.c | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/gatchat/gatrawip.c b/gatchat/gatrawip.c new file mode 100644 index 00000000..8f19949e --- /dev/null +++ b/gatchat/gatrawip.c @@ -0,0 +1,126 @@ +/* + * + * AT chat library with GLib integration + * + * Copyright (C) 2008-2010 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 + * + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <glib.h> + +#include "gatrawip.h" + +struct _GAtRawIP { + gint ref_count; + GAtIO *io; + char *ifname; + GAtDebugFunc debugf; + gpointer debug_data; +}; + +GAtRawIP *g_at_rawip_new(GIOChannel *channel) +{ + GAtRawIP *rawip; + GAtIO *io; + + io = g_at_io_new(channel); + if (io == NULL) + return NULL; + + rawip = g_at_rawip_new_from_io(io); + + g_at_io_unref(io); + + return rawip; +} + +GAtRawIP *g_at_rawip_new_from_io(GAtIO *io) +{ + GAtRawIP *rawip; + + rawip = g_try_new0(GAtRawIP, 1); + if (rawip == NULL) + return NULL; + + rawip->ref_count = 1; + + rawip->io = g_at_io_ref(io); + + return rawip; +} + +GAtRawIP *g_at_rawip_ref(GAtRawIP *rawip) +{ + if (rawip == NULL) + return NULL; + + g_atomic_int_inc(&rawip->ref_count); + + return rawip; +} + +void g_at_rawip_unref(GAtRawIP *rawip) +{ + if (rawip == NULL) + return; + + if (g_atomic_int_dec_and_test(&rawip->ref_count) == FALSE) + return; + + g_at_io_unref(rawip->io); + rawip->io = NULL; + + g_free(rawip->ifname); + g_free(rawip); +} + +void g_at_rawip_open(GAtRawIP *rawip) +{ + if (rawip == NULL) + return; + + /* open TUN/TAP device */ +} + +void g_at_rawip_shutdown(GAtRawIP *rawip) +{ + if (rawip == NULL) + return; + + /* close TUN/TAP device */ +} + +const char *g_at_rawip_get_interface(GAtRawIP *rawip) +{ + if (rawip == NULL) + return NULL; + + return rawip->ifname; +} + +void g_at_rawip_set_debug(GAtRawIP *rawip, GAtDebugFunc func, + gpointer user_data) +{ + if (rawip == NULL) + return; + + rawip->debugf = func; + rawip->debug_data = user_data; +} |