Date: Thu, 18 Aug 2016 21:47:39 GMT From: yuanxunzhang@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r307973 - in soc2016/yuanxunzhang/head: sys/net usr.sbin/eaps Message-ID: <201608182147.u7ILldTs019789@socsvn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: yuanxunzhang Date: Thu Aug 18 21:47:39 2016 New Revision: 307973 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=307973 Log: EAPS: query eaps domian status Modified: soc2016/yuanxunzhang/head/sys/net/eaps.c soc2016/yuanxunzhang/head/sys/net/eaps.h soc2016/yuanxunzhang/head/usr.sbin/eaps/eaps.c soc2016/yuanxunzhang/head/usr.sbin/eaps/eaps.h Modified: soc2016/yuanxunzhang/head/sys/net/eaps.c ============================================================================== --- soc2016/yuanxunzhang/head/sys/net/eaps.c Thu Aug 18 19:18:40 2016 (r307972) +++ soc2016/yuanxunzhang/head/sys/net/eaps.c Thu Aug 18 21:47:39 2016 (r307973) @@ -245,7 +245,8 @@ struct rm_priotracker tracker; EAPS_RLOCK(sc, &tracker); es->state = sc->sc_eaps.state; - es->active = sc->sc_eaps.active; + es->status = sc->sc_eaps.status; + es->ifname = sc->sc_ifp->if_xname; printf("EAPS status: interface: %s, state: %d\n.", sc->sc_ifp->if_xname, es->state); EAPS_RUNLOCK(sc, &tracker); } @@ -256,7 +257,7 @@ //set eaps domain protocol state to default value EAPS_WLOCK(sc); sc->sc_eaps.state = EAPS_S_IDLE; - sc->sc_eaps.active = EAPS_ACTIVE_DISABLE; + sc->sc_eaps.status = EAPS_ACTIVE_DISABLE; EAPS_WUNLOCK(sc); } Modified: soc2016/yuanxunzhang/head/sys/net/eaps.h ============================================================================== --- soc2016/yuanxunzhang/head/sys/net/eaps.h Thu Aug 18 19:18:40 2016 (r307972) +++ soc2016/yuanxunzhang/head/sys/net/eaps.h Thu Aug 18 21:47:39 2016 (r307973) @@ -151,10 +151,10 @@ #define EAPS_S_INIT 0x06 /* Master node in INIT state */ /* - * EAPS ring active states + * EAPS ring status states (active or not active) */ -#define EAPS_ACTIVE_DISABLE 0x00 /* Disable the eaps domain */ -#define EAPS_ACTIVE_ENABLE 0x01 /* Enable the eaps domain */ +#define EAPS_STATUS_ACTIVE 0x00 /* Eaps is active */ +#define EAPS_STATUS_NOT_ACTIVE 0x01 /* Eaps is not active */ #define EAPS_LOCK_INIT(_sc) rm_init(&(_sc)->sc_mtx, "eaps rmlock") #define EAPS_LOCK_DESTROY(_sc) rm_destroy(&(_sc)->sc_mtx) Modified: soc2016/yuanxunzhang/head/usr.sbin/eaps/eaps.c ============================================================================== --- soc2016/yuanxunzhang/head/usr.sbin/eaps/eaps.c Thu Aug 18 19:18:40 2016 (r307972) +++ soc2016/yuanxunzhang/head/usr.sbin/eaps/eaps.c Thu Aug 18 21:47:39 2016 (r307973) @@ -59,6 +59,22 @@ static const char eaps_ifname[] = "eaps"; +/* Must be same order with define */ +static const char *eaps_status_message[] = { + "active", /* EAPS_STATUS_ACTIVE */ + "not active", /* EAPS_STATUS_NOT_ACTIVE */ +}; + +static const char *eaps_state_message[] = { + "idle", /* EAPS_S_IDLE */ + "complete" /* EAPS_S_COMPLETE */ + "failed" /* EAPS_S_FAILED */ + "link up" /* EAPS_S_LINKS_UP */ + "link down" /* EAPS_S_LINK_DOWN */ + "preforward" /* EAPS_S_PREFORWARD */ + "init" /* EAPS_S_INIT */ +} + static struct keytab { const char *kt_cp; int kt_i; @@ -183,8 +199,14 @@ } strlcpy(es.ifname, domain_name, sizeof(es.ifname)); - if (ioctl(s, SIOCSEAPSDOMAIN, &es) < 0) + if (ioctl(s, SIOCSEAPSDOMAIN, &es) == 0) { + printf("%s: ", domain_name); + printf("status: %s, ", eaps_status_message[es->status]); + printf("state: %s, ", eaps_state_message[es->state]); + putchar('\n'); + } else { err(1, "SIOCSEAPSDOMAIN"); + } exit(error); } Modified: soc2016/yuanxunzhang/head/usr.sbin/eaps/eaps.h ============================================================================== --- soc2016/yuanxunzhang/head/usr.sbin/eaps/eaps.h Thu Aug 18 19:18:40 2016 (r307972) +++ soc2016/yuanxunzhang/head/usr.sbin/eaps/eaps.h Thu Aug 18 21:47:39 2016 (r307973) @@ -47,5 +47,21 @@ uint8_t active; /* enable or disable eaps */ }; +/* + * EAPS ring node states + */ +#define EAPS_S_IDLE 0x00 /* EAPS Domain (Master/Transit) not running */ +#define EAPS_S_COMPLETE 0x01 /* Master node in COMPLETE state */ +#define EAPS_S_FAILED 0x02 /* Master node in FAILED state */ +#define EAPS_S_LINKS_UP 0x03 /* Transit UP: Pri & Sec ring ports are up */ +#define EAPS_S_LINK_DOWN 0x04 /* Transit DOWN: Pri and/or Sec ports down */ +#define EAPS_S_PREFORWARD 0x05 /* Transit in PREFORWARDING State */ +#define EAPS_S_INIT 0x06 /* Master node in INIT state */ + +/* + * EAPS ring status states (active or not active) + */ +#define EAPS_STATUS_ACTIVE 0x00 /* Eaps is active */ +#define EAPS_STATUS_NOT_ACTIVE 0x01 /* Eaps is not active */ #define SIOCSEAPSDOMAIN _IOWR('i', 300, struct eaps_state)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201608182147.u7ILldTs019789>