KDK_NET_GET_IPTABLE_RULES(3)

NAME
kdk_net_get_iptable_rules - 获取防火墙信息

SYNOPSIS
#include <libkynetinfo.h>

extern pChain kdk_net_get_iptable_rules();

Link with -lkynetinfo.

Detailed Description
The main function of the interface is to obtain firewall information.

RETURN VALUE
On success, returns a pointer to a pChain structure containing firewall information.

The pChain structure is defined in <libkynetinfo.h> as follows:

            typedef struct chain
            {
                char total[16]; //链名
                char policy[32]; //链的规则
                pChainData data;
                struct chain *next;
            } Chain, *pChain;

            typedef struct chain_data
            {
                char target[8];
                char prot[4 + 1];
                char opt[4 + 1];
                char source[32];
                char destination[64];
                char option[128];
                struct chain_data *next;
            } chainData, *pChainData;

On error, return NULL.

EXAMPLES
    #include "libkynetinfo.h"
    #include "stdio.h"
    #include "stdlib.h"

    int main(int argc, char *argv[])
    {
        prouteMapList list = kdk_net_get_route(), tmp = list;
        while (tmp)
        {
            printf("%s default route %s, tmp->name, tmp->addr);
            tmp = tmp->next;
        }
        kdk_net_free_route(list);
        if (argc < 2)
            printf("please input test port num);
        else
            printf("port:%s's state %d, argv[1], kdk_net_get_port_stat(atoi(argv[1])));

        pChain chain = kdk_net_get_iptable_rules();
        pChain tmpchain = chain;
        while(tmpchain)
        {
            printf("Chain: %s	police: %s,tmpchain->total,tmpchain->policy);
            pChainData tmpData = tmpchain->data;
            if(tmpData)
                printf("target: %s	prot: %s	opt: %s	source: %s	destination: %s	option: %s,tmpData->target,tmpData->prot,tmpData->opt,
                                    tmpData->source,tmpData->destination,tmpData->option);
            printf(");
            tmpchain = tmpchain->next;
        }
        kdk_net_free_chain(chain);

        int result[65536];
        int net = kdk_net_get_multiple_port_stat(0, 1000, result);
        if(net == 0)
        {
            size_t count = 0;
            for(;count < 1000 ;count++)
            {
                printf("%d	", result[count]);
            }
        }
        else
            printf("Failed With %d", net);
         printf(");

        char mask[32] = " ";
        kdk_net_get_netmask("enaftgm1i0", mask);
        printf("mask = %s, mask);

        char **port = kdk_net_get_proc_port();
        size_t index = 0;
        while(port[index])
        {
            printf("No.%ld, port = %s, index+1, port[index]);
            index++;
        }
        kdk_net_freeall(port);

        port = kdk_net_get_up_port();
        index = 0;
        while(port[index])
        {
            printf("No.%ld, port = %s, index+1, port[index]);
            index++;
        }
        kdk_net_freeall(port);

        char *hosts = kdk_net_get_hosts();
        if (hosts != NULL)
        {
            printf("hosts = %s, hosts);
            free(hosts);
        }

        char *domain = kdk_net_get_hosts_domain();
        if (domain != NULL)
        {
            printf("domain = %s, domain);
            free(domain);
        }

        char **resolv = kdk_net_get_resolv_conf();
        index = 0;
        while(resolv[index])
        {
            printf("No.%ld, resolv = %s, index+1, resolv[index]);
            index++;
        }
        kdk_net_freeall(resolv);
        return 0;
    }

CONFORMING TO
These functions are as per the withdrawn POSIX.1e draft specification. The following functions are Linux extensions: kdk_net_get_netmask(), kdk_net_get_port_stat(), kdk_net_get_multiple_port_stat(), kdk_net_get_route(), kdk_net_free_route(), kdk_net_free_chain(), kdk_net_get_proc_port(), kdk_net_get_up_port(), kdk_net_get_hosts(), kdk_net_get_hosts_domain(), kdk_net_get_resolv_conf() and kdk_net_freeall().

SEE ALSO
kdk_net_get_netmask(3), kdk_net_get_port_stat(3), kdk_net_get_multiple_port_stat(3), kdk_net_get_route(3), kdk_net_free_route(3), kdk_net_free_chain(3), kdk_net_get_up_port(3), kdk_net_get_hosts(3), kdk_net_get_hosts_domain(3), kdk_net_get_resolv_conf(3) and kdk_net_freeall(3).