编辑代码

#include <stdio.h>

typedef unsigned int uint_t;

typedef enum VD_L2_FLAGS_tag
{
    VD_L2_DISCARD_SRC       = 0x1,
    VD_L2_DISCARD_DST       = 0x2,
    VD_L2_STATIC            = 0x10,
    VD_L2_TRUNK_MEMBER      = 0x20,
    VD_L2_ROUTER_NH         = 0x800,

    VD_FLAGS_MAX
}VD_L2_FLAGS;


#define RTK_L2_UCAST_FLAG_TRUNK_PORT        0x00000001
#define RTK_L2_UCAST_FLAG_SA_BLOCK          0x00000002
#define RTK_L2_UCAST_FLAG_DA_BLOCK          0x00000004
#define RTK_L2_UCAST_FLAG_STATIC            0x00000008
#define RTK_L2_UCAST_FLAG_NEXTHOP           0x00000010



int main () {
    //JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。 
    //printf("Hello world!     - c.jsrun.net.");

    uint_t flags_int, flags_out;

    flags_out = 0;
    flags_int = (VD_L2_DISCARD_SRC | VD_L2_DISCARD_DST | VD_L2_STATIC);
    printf("---- No.1 flags_out: %x -----\n", flags_out);

    if(flags_int & VD_L2_TRUNK_MEMBER)
    {
        flags_out |= RTK_L2_UCAST_FLAG_TRUNK_PORT;
    }
    printf("---- No.2 flags_out: %x -----\n", flags_out);
    if(flags_int & VD_L2_STATIC)
    {
        flags_out |= RTK_L2_UCAST_FLAG_STATIC;
        if(flags_int & VD_L2_ROUTER_NH)
        {
            flags_out |= RTK_L2_UCAST_FLAG_NEXTHOP;
        }
    }
    printf("---- No.3 flags_out: %x -----\n", flags_out);
    if(flags_int & VD_L2_DISCARD_SRC)
    {
        flags_out |= RTK_L2_UCAST_FLAG_SA_BLOCK;
    }
    printf("---- No.4 flags_out: %x -----\n", flags_out);
    if(flags_int & VD_L2_DISCARD_DST)
    {
        flags_out |= RTK_L2_UCAST_FLAG_DA_BLOCK;
    }

    printf("---- No.5 flags_out: %x -----\n", flags_out);


    return 0;
}