File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / miniupnpd / getconnstatus.c
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Mon Jul 22 00:32:35 2013 UTC (11 years, 5 months ago) by misho
Branches: miniupnpd, elwix, MAIN
CVS tags: v1_8p0, v1_8, HEAD
1.8

    1: /* $Id: getconnstatus.c,v 1.1.1.2 2013/07/22 00:32:35 misho Exp $ */
    2: /* MiniUPnP project
    3:  * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
    4:  * (c) 2011 Thomas Bernard
    5:  * This software is subject to the conditions detailed
    6:  * in the LICENCE file provided within the distribution */
    7: 
    8: #include <stdio.h>
    9: #include <sys/types.h>
   10: #include <netinet/in.h>
   11: #include "getconnstatus.h"
   12: #include "getifaddr.h"
   13: 
   14: #define STATUS_UNCONFIGURED (0)
   15: #define STATUS_CONNECTING (1)
   16: #define STATUS_CONNECTED (2)
   17: #define STATUS_PENDINGDISCONNECT (3)
   18: #define STATUS_DISCONNECTING (4)
   19: #define STATUS_DISCONNECTED (5)
   20: 
   21: /**
   22:  * get the connection status
   23:  * return values :
   24:  *  0 - Unconfigured
   25:  *  1 - Connecting
   26:  *  2 - Connected
   27:  *  3 - PendingDisconnect
   28:  *  4 - Disconnecting
   29:  *  5 - Disconnected */
   30: int
   31: get_wan_connection_status(const char * ifname)
   32: {
   33: 	char addr[INET_ADDRSTRLEN];
   34: 	int r;
   35: 
   36: 	/* we need a better implementation here.
   37: 	 * I'm afraid it should be device specific */
   38: 	r = getifaddr(ifname, addr, INET_ADDRSTRLEN);
   39: 	return (r < 0) ? STATUS_DISCONNECTED : STATUS_CONNECTED;
   40: }
   41: 
   42: /**
   43:  * return the same value as get_wan_connection_status()
   44:  * as a C string */
   45: const char *
   46: get_wan_connection_status_str(const char * ifname)
   47: {
   48: 	int status;
   49: 	const char * str = NULL;
   50: 
   51: 	status = get_wan_connection_status(ifname);
   52: 	switch(status) {
   53: 	case 0:
   54: 		str = "Unconfigured";
   55: 		break;
   56: 	case 1:
   57: 		str = "Connecting";
   58: 		break;
   59: 	case 2:
   60: 		str = "Connected";
   61: 		break;
   62: 	case 3:
   63: 		str = "PendingDisconnect";
   64: 		break;
   65: 	case 4:
   66: 		str = "Disconnecting";
   67: 		break;
   68: 	case 5:
   69: 		str = "Disconnected";
   70: 		break;
   71: 	}
   72: 	return str;
   73: }
   74: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>