def cmd_msg_parser(who, nlh, ops, cache_ops, arg):
ghdr = genlmsg_hdr(nlh)<EOL>cmd = lookup_cmd(ops, ghdr.cmd)<EOL>if not cmd:<EOL><INDENT>return -NLE_MSGTYPE_NOSUPPORT<EOL><DEDENT>if cmd.c_msg_parser is None:<EOL><INDENT>return -NLE_OPNOTSUPP<EOL><DEDENT>tb = dict((i, None) for i in range(cmd.c_maxattr + <NUM_LIT:1>))<EOL>info = genl_info(who=who, nlh=nlh, genlhdr=ghdr, userhdr=genlmsg_user_hdr(ghdr), attrs=tb)<EOL>err = nlmsg_parse(nlh, GENL_HDRSIZE(ops.o_hdrsize), tb, cmd.c_maxattr, cmd.c_attr_policy)<EOL>if err < <NUM_LIT:0>:<EOL><INDENT>return err<EOL><DEDENT>return cmd.c_msg_parser(cache_ops, cmd, info, arg)<EOL>
https://github.com/thom311/libnl/blob/libnl3_2_25/lib/genl/mngt.c#L47.

    Positional arguments:
    who -- sockaddr_nl class instance.
    nlh -- nlmsghdr class instance.
    ops -- genl_ops class instance.
    cache_ops -- nl_cache_ops class instance.
    arg -- to be passed along to .c_msg_parser().

    Returns:
    Integer