1 /* 2 * GNetwork Library: libgnetwork/gnetwork-interfaces.h 3 * 4 * Copyright (C) 2003 James M. Cape 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public License as 8 * published by the Free Software Foundation; version 2.1 of the 9 * License. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public License 17 * along with this program; if not, write to the Free Software 18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 19 * USA 20 */ 21 22 #ifndef __GNETWORK_INTERFACES_H__ 23 #define __GNETWORK_INTERFACES_H__ 24 25 #include <glib-object.h> 26 27 G_BEGIN_DECLS 28 29 30 #define GNETWORK_TYPE_INTERFACE_INFO (gnetwork_interface_info_get_type ()) 31 #define GNETWORK_IS_INTERFACE_INFO(ptr) (G_TYPE_CHECK_CLASS_TYPE (ptr, GNETWORK_TYPE_INTERFACE_INFO)) 32 #define GNETWORK_INTERFACE_INFO(ptr) (G_TYPE_CHECK_CLASS_CAST (ptr, GNETWORK_TYPE_INTERFACE_INFO, GNetworkInterfaceInfo)) 33 34 35 typedef enum /* <flags,prefix=GNETWORK_INTERFACE> */ 36 { 37 GNETWORK_INTERFACE_NONE = 0, 38 39 /* Status */ 40 GNETWORK_INTERFACE_IS_UP = 1 << 0, 41 GNETWORK_INTERFACE_IS_RUNNING = 1 << 1, 42 GNETWORK_INTERFACE_IS_DEBUGGING = 1 << 2, 43 44 /* Special Types */ 45 GNETWORK_INTERFACE_IS_LOOPBACK = 1 << 3, 46 GNETWORK_INTERFACE_IS_POINT_TO_POINT = 1 << 4, 47 GNETWORK_INTERFACE_IS_LOAD_MASTER = 1 << 5, 48 GNETWORK_INTERFACE_IS_LOAD_SLAVE = 1 << 6, 49 50 /* Capabilities */ 51 GNETWORK_INTERFACE_CAN_BROADCAST = 1 << 7, 52 GNETWORK_INTERFACE_CAN_MULTICAST = 1 << 8, 53 GNETWORK_INTERFACE_NO_TRAILERS = 1 << 9, 54 55 GNETWORK_INTERFACE_NO_ARP = 1 << 10, 56 GNETWORK_INTERFACE_CAN_SET_MEDIA = 1 << 11, 57 GNETWORK_INTERFACE_ALTERNATE_LINK = 1 << 12, 58 GNETWORK_INTERFACE_AUTOSELECTED_MEDIA = 1 << 13, 59 60 /* Modes */ 61 GNETWORK_INTERFACE_RECV_ALL_PACKETS = 1 << 14, 62 GNETWORK_INTERFACE_RECV_ALL_MULTICAST = 1 << 15 63 } 64 GNetworkInterfaceFlags; 65 66 typedef enum 67 { 68 GNETWORK_PROTOCOL_NONE = 0, 69 GNETWORK_PROTOCOL_IPv4 = 1 << 0, 70 GNETWORK_PROTOCOL_IPv6 = 1 << 1, 71 GNETWORK_PROTOCOL_PACKET = 1 << 2 72 } 73 GNetworkProtocols; 74 75 76 typedef struct _GNetworkInterfaceInfo GNetworkInterfaceInfo; 77 78 79 GType gnetwork_interface_info_get_type (void) G_GNUC_CONST; 80 81 GNetworkInterfaceInfo *gnetwork_interface_get_info (const gchar * name); 82 GNetworkInterfaceInfo *gnetwork_interface_get_info_by_address (const gchar * address); 83 GSList *gnetwork_interface_get_all_interfaces (void); 84 85 gchar *gnetwork_interface_info_get_name (const GNetworkInterfaceInfo * info); 86 GNetworkProtocols gnetwork_interface_info_get_protocols (const GNetworkInterfaceInfo * info); 87 gconstpointer gnetwork_interface_info_get_address (const GNetworkInterfaceInfo * info, 88 GNetworkProtocols protocol); 89 gconstpointer gnetwork_interface_info_get_broadcast_address (const GNetworkInterfaceInfo * info, 90 GNetworkProtocols protocol); 91 gconstpointer gnetwork_interface_info_get_destination (const GNetworkInterfaceInfo * info, 92 GNetworkProtocols protocol); 93 gconstpointer gnetwork_interface_info_get_netmask (const GNetworkInterfaceInfo * info, 94 GNetworkProtocols protocol); 95 G_CONST_RETURN GSList *gnetwork_interface_info_get_multicasts (const GNetworkInterfaceInfo * info, 96 GNetworkProtocols protocol); 97 GNetworkInterfaceFlags gnetwork_interface_info_get_flags (const GNetworkInterfaceInfo * info); 98 guint gnetwork_interface_info_get_index (const GNetworkInterfaceInfo * info); 99 100 GNetworkInterfaceInfo *gnetwork_interface_info_ref (GNetworkInterfaceInfo * info); 101 void gnetwork_interface_info_unref (GNetworkInterfaceInfo * info); 102 gint gnetwork_interface_info_collate (const GNetworkInterfaceInfo * info1, 103 const GNetworkInterfaceInfo * info2); 104 105 106 G_END_DECLS 107 108 #endif /* !__GNETWORK_INTERFACES_H__ */ 109