Skip to main content

Raymii.org Logo (IEC resistor symbol) logo

Quis custodiet ipsos custodes?
Home | About | All pages | RSS Feed | Gopher

connman operstate list

Published: 25-06-2019 | Author: Remy van Elst | Text only version of this article


Table of Contents


Recently I was debugging connection issues with a system that uses connman as it's network management software. In the log it was visible that the connection went away and came back, logged with ' operstate $number $state. I couldn't easily find an overview of all the possible states, but since it's open source we can take a look at the code to find out. Publishing it here for future reference.

If you like this article, consider sponsoring me by trying out a Digital Ocean VPS. With this link you'll get $100 credit for 60 days). (referral link)

Log

The relevant parts of the logging look like this:

Jun 22 19:41:33 hostname connmand[8080]: eth1 {newlink} index 5 operstate 6 <UP>
Jun 23 16:34:07 hostname connmand[26069]: eth1 {update} flags 36866 <DOWN>
Jun 23 16:34:07 hostname connmand[26069]: eth1 {newlink} index 5 operstate 2 <DOWN>
Jun 23 16:34:08 hostname connmand[26069]: eth1 {newlink} index 5 operstate 6 <UP>
Jun 23 16:34:08 hostname connmand[26069]: eth1 {update} flags 36867 <UP>
Jun 23 16:34:08 hostname connmand[26069]: eth1 {newlink} index 5 operstate 2 <DOWN>
Jun 23 16:34:10 hostname connmand[26069]: eth1 {newlink} index 5 operstate 6 <UP>

The different manpages and online search results didn't give me the information I was looking for, so I cloned the repository and turned to trusty old grep.

git clone https://git.kernel.org/pub/scm/network/connman/connman.git/
cd connman

Searching recursively:

grep -iInHr "operstate" * 

The first hit was what I was looking for:

src/rtnl.c:344:static const char *operstate2str(unsigned char operstate)
src/rtnl.c:346: switch (operstate) {

You can view the code online via gitweb, but here's the list, I've added the comments with the numbers per state:

static const char *operstate2str(unsigned char operstate)
{
    switch (operstate) {
    case IF_OPER_UNKNOWN: //0
        return "UNKNOWN";
    case IF_OPER_NOTPRESENT: //1
        return "NOT-PRESENT";
    case IF_OPER_DOWN: //2
        return "DOWN";
    case IF_OPER_LOWERLAYERDOWN: //3
        return "LOWER-LAYER-DOWN";
    case IF_OPER_TESTING: //4
        return "TESTING"; 
    case IF_OPER_DORMANT: //5
        return "DORMANT";
    case IF_OPER_UP: //6
        return "UP";
    }

    return "";
}

This info is what I was looking for to use in further automated log analysis.

Tags: connman , connmand , embedded , linux , network , networkmanager , openembedded , snippets , yocto