Skip to main content

Raymii.org Raymii.org Logo

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

connman operstate list

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


❗ This post is over two years old. It may no longer be up to date. Opinions may have changed.

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.

Consider sponsoring me on Github. It means the world to me if you show your appreciation and you'll help pay the server costs.

You can also sponsor me by getting a Digital Ocean VPS. With this referral link you'll get $100 credit for 60 days.

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