⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 monitor.c

📁 eCos操作系统源码
💻 C
📖 第 1 页 / 共 5 页
字号:
                    {                        if( loc != base )                        {                            html_table_data_begin( client, "" );                            for( ; oloc < loc; oloc++ )                            {                                char c = *(char *)oloc;                                if( !isprint(c) )                                    c = '.';                                putc( c, client );                            }                            html_table_row_end( client );                        }                        if( loc == (base+size) )                            break;                        html_table_row_begin(client, "" );                        html_table_data_begin( client, "" );                        fprintf( client, "%08x:",loc);                    }                    html_table_data_begin( client, "" );                    if( (loc % datasize) == 0 )                    {                        switch( datasize )                        {                        case 1: fprintf( client, "%02x", *(cyg_uint8  *)loc ); break;                        case 2: fprintf( client, "%04x", *(cyg_uint16 *)loc ); break;                        case 4: fprintf( client, "%08x", *(cyg_uint32 *)loc ); break;                        }                    }                }            }            html_table_end( client );            cyg_html_tag_end( client, "font" );                        html_form_input(client, "submit", "next", "Next Page", "");                    }        html_form_end( client );        draw_navbar(client);    }    html_body_end(client);    html_end(client);        return 1;    }CYG_HTTPD_TABLE_ENTRY( cyg_monitor_memory_entry,                       "/monitor/memory.htm*",                       cyg_monitor_memory,                       NULL );/* ================================================================= *//* Network Monitor * * This function generates a page containing information about the * network interfaces and the protocols. */static cyg_bool cyg_monitor_network( FILE * client, char *filename,                                     char *formdata, void *arg ){    struct ifaddrs *iflist, *ifp;    getifaddrs(&iflist);        html_begin(client);    html_head(client,"eCos Network Monitor", "");    html_body_begin(client,"");    {        html_heading(client, 2, "Network Monitor" );        html_heading(client, 3, "Interfaces" );                html_table_begin( client, "border" );        {            char addr[64];            int i;            ifp = iflist;            html_table_header( client, "Interface", "" );            html_table_header( client, "Status", "" );            while( ifp != (struct ifaddrs *)NULL)             {                if (ifp->ifa_addr->sa_family != AF_LINK)                 {                                    html_table_row_begin(client, "" );                  {                        html_table_data_begin( client, "" );                        fprintf( client, "%s", ifp->ifa_name);                        html_table_data_begin( client, "" );                                                html_table_begin( client, "" );                        {                            /* Get the interface's flags and display                             * the interesting ones.                             */                                                        html_table_row_begin(client, "" );                            fprintf( client, "<td>Flags<td>\n" );                            for( i = 0; i < 16; i++ )                              {                                switch( ifp->ifa_flags & (1<<i) )                                  {                                  default: break;                                  case IFF_UP: fputs( " UP", client ); break;                                  case IFF_BROADCAST: fputs( " BROADCAST", client ); break;                                  case IFF_DEBUG: fputs( " DEBUG", client ); break;                                  case IFF_LOOPBACK: fputs( " LOOPBACK", client ); break;                                  case IFF_PROMISC: fputs( " PROMISCUOUS", client ); break;                                  case IFF_RUNNING: fputs( " RUNNING", client ); break;                                  case IFF_SIMPLEX: fputs( " SIMPLEX", client ); break;                                  case IFF_MULTICAST: fputs( " MULTICAST", client ); break;                                  }                              }                            html_table_row_end( client );                                                                        html_table_row_begin(client, "" );                            getnameinfo(ifp->ifa_addr, sizeof(*ifp->ifa_addr),                                        addr, sizeof(addr), NULL, 0, NI_NUMERICHOST);                            fprintf( client, "<td>Address<td>%s\n", addr);                            html_table_row_end( client );                                                        if (ifp->ifa_netmask)                             {                              html_table_row_begin(client, "" );                              getnameinfo(ifp->ifa_netmask, sizeof(*ifp->ifa_netmask),                                          addr, sizeof(addr), NULL, 0, NI_NUMERICHOST);                              fprintf( client, "<td>Mask<td>%s\n", addr);                               html_table_row_end( client );                            }                            if (ifp->ifa_broadaddr)                             {                              html_table_row_begin(client, "" );                              getnameinfo(ifp->ifa_broadaddr, sizeof(*ifp->ifa_broadaddr),                                          addr, sizeof(addr), NULL, 0, NI_NUMERICHOST);                              fprintf( client, "<td>Broadcast<td>%s\n", addr);                               html_table_row_end( client );                            }                        }                        html_table_end( client );                       }                    html_table_row_end( client );                }                ifp = ifp->ifa_next;            }        }        html_table_end( client );        /* Now the protocols. For each of the main protocols: IP,         * ICMP, UDP, TCP print a table of useful information derived         * from the in-kernel data structures. Note that this only         * works for the BSD stacks.         */                html_para_begin( client, "" );        html_heading(client, 3, "Protocols" );        html_para_begin( client, "" );        html_table_begin( client, "border");        {            html_table_header( client, "IPv4", "" );#ifdef CYGPKG_NET_INET6            html_table_header( client, "IPv6", "" );#endif                        html_table_header( client, "ICMPv4", "" );#ifdef CYGPKG_NET_INET6            html_table_header( client, "ICMPv6", "" );#endif                        html_table_header( client, "UDP", "" );            html_table_header( client, "TCP", "" );            html_table_row_begin(client, "" );            {                html_table_data_begin( client, "valign=\"top\"" );                                        html_table_begin( client, "" );                {                    fprintf( client, "<tr><td><b>%s:</b><td></tr>\n", "Received" );                    fprintf( client, "<tr><td>%s<td>%ld</tr>\n", "Total",                             ipstat.ips_total );                    fprintf( client, "<tr><td>%s<td>%ld</tr>\n", "Bad",                             ipstat.ips_badsum+                             ipstat.ips_tooshort+                             ipstat.ips_toosmall+                             ipstat.ips_badhlen+                             ipstat.ips_badlen+                             ipstat.ips_noproto+                             ipstat.ips_toolong                        );                    fprintf( client, "<tr><td>%s<td>%ld</tr>\n", "Reassembled",                             ipstat.ips_reassembled );                    fprintf( client, "<tr><td>%s<td>%ld</tr>\n", "Delivered",                             ipstat.ips_delivered );                    fprintf( client, "<tr><td><b>%s:</b><td></tr>\n", "Sent" );                                        fprintf( client, "<tr><td>%s<td>%ld</tr>\n", "Total",                             ipstat.ips_localout );                    fprintf( client, "<tr><td>%s<td>%ld</tr>\n", "Raw",                             ipstat.ips_rawout );                    fprintf( client, "<tr><td>%s<td>%ld</tr>\n", "Fragmented",                             ipstat.ips_fragmented );                }                html_table_end( client );#ifdef CYGPKG_NET_INET6                html_table_data_begin( client, "valign=\"top\"" );                                        html_table_begin( client, "" );                {                    fprintf( client, "<tr><td><b>%s:</b><td></tr>\n", "Received" );                    fprintf( client, "<tr><td>%s<td>%lld</tr>\n", "Total",                             ip6stat.ip6s_total );                    fprintf( client, "<tr><td>%s<td>%lld</tr>\n", "Bad",                             ip6stat.ip6s_tooshort+                             ip6stat.ip6s_toosmall                        );                    fprintf( client, "<tr><td>%s<td>%lld</tr>\n", "Reassembled",                             ip6stat.ip6s_reassembled );                    fprintf( client, "<tr><td>%s<td>%lld</tr>\n", "Delivered",                             ip6stat.ip6s_delivered );                    fprintf( client, "<tr><td><b>%s:</b><td></tr>\n", "Sent" );                                        fprintf( client, "<tr><td>%s<td>%lld</tr>\n", "Total",                             ip6stat.ip6s_localout );                    fprintf( client, "<tr><td>%s<td>%lld</tr>\n", "Raw",                             ip6stat.ip6s_rawout );                    fprintf( client, "<tr><td>%s<td>%lld</tr>\n", "Fragmented",                             ip6stat.ip6s_fragmented );                }                html_table_end( client );#endif                html_table_data_begin( client, "valign=\"top\"" );                                        html_table_begin( client, "" );                {                    fprintf( client, "<tr><td><b>%s:</b><td></tr>\n", "Received" );                    fprintf( client, "<tr><td>%s<td>%ld</tr>\n", "ECHO",                             icmpstat.icps_inhist[ICMP_ECHO] );                    fprintf( client, "<tr><td>%s<td>%ld</tr>\n", "ECHO REPLY",                             icmpstat.icps_inhist[ICMP_ECHOREPLY] );                    fprintf( client, "<tr><td>%s<td>%ld</tr>\n", "UNREACH",                             icmpstat.icps_inhist[ICMP_UNREACH] );                    fprintf( client, "<tr><td>%s<td>%ld</tr>\n", "REDIRECT",                             icmpstat.icps_inhist[ICMP_REDIRECT] );                    fprintf( client, "<tr><td>%s<td>%ld</tr>\n", "Other",                             icmpstat.icps_inhist[ICMP_SOURCEQUENCH]+                             icmpstat.icps_inhist[ICMP_ROUTERADVERT]+                             icmpstat.icps_inhist[ICMP_ROUTERSOLICIT]+                             icmpstat.icps_inhist[ICMP_TIMXCEED]+                             icmpstat.icps_inhist[ICMP_PARAMPROB]+                             icmpstat.icps_inhist[ICMP_TSTAMP]+                             icmpstat.icps_inhist[ICMP_TSTAMPREPLY]+                             icmpstat.icps_inhist[ICMP_IREQ]+                             icmpstat.icps_inhist[ICMP_IREQREPLY]+                             icmpstat.icps_inhist[ICMP_MASKREQ]+                             icmpstat.icps_inhist[ICMP_MASKREPLY]                        );                    fprintf( client, "<tr><td>%s<td>%ld</tr>\n", "Bad",                             icmpstat.icps_badcode+                             icmpstat.icps_tooshort+                             icmpstat.icps_checksum+                             icmpstat.icps_badlen+                             icmpstat.icps_bmcastecho                        );                    fprintf( client, "<tr><td><b>%s:</b><td></tr>\n", "Sent" );                                        fprintf( client, "<tr><td>%s<td>%ld</tr>\n", "ECHO",                             icmpstat.icps_outhist[ICMP_ECHO] );                    fprintf( client, "<tr><td>%s<td>%ld</tr>\n", "ECHO REPLY",                             icmpstat.icps_outhist[ICMP_ECHOREPLY] );                    fprintf( client, "<tr><td>%s<td>%ld</tr>\n", "UNREACH",                             icmpstat.icps_outhist[ICMP_UNREACH] );                    fprintf( client, "<tr><td>%s<td>%ld</tr>\n", "REDIRECT",                             icmpstat.icps_outhist[ICMP_REDIRECT] );                    fprintf( client, "<tr><td>%s<td>%ld</tr>\n", "Other",                             icmpstat.icps_inhist[ICMP_SOURCEQUENCH]+                                                          icmpstat.icps_outhist[ICMP_ROUTERADVERT]+                             icmpstat.icps_outhist[ICMP_ROUTERSOLICIT]+                             icmpstat.icps_outhist[ICMP_TIMXCEED]+                             icmpstat.icps_outhist[ICMP_PARAMPROB]+                             icmpstat.icps_outhist[ICMP_TSTAMP]+                             icmpstat.icps_outhist[ICMP_TSTAMPREPLY]+                             icmpstat.icps_outhist[ICMP_IREQ]+                             icmpstat.icps_outhist[ICMP_IREQREPLY]+                             icmpstat.icps_outhist[ICMP_MASKREQ]+                             icmpstat.icps_outhist[ICMP_MASKREPLY]                        );                }                html_table_end( client );#ifdef CYGPKG_NET_INET6                html_table_data_begin( client, "valign=\"top\"" );                                        html_table_begin( client, "" );                {                    fprintf( client, "<tr><td><b>%s:</b><td></tr>\n", "Received" );                    fprintf( client, "<tr><td>%s<td>%lld</tr>\n", "ECHO",                             icmp6stat.icp6s_inhist[ICMP_ECHO] );                    fprintf( client, "<tr><td>%s<td>%lld</tr>\n", "ECHO REPLY",                             icmp6stat.icp6s_inhist[ICMP_ECHOREPLY] );                    fprintf( client, "<tr><td>%s<td>%lld</tr>\n", "UNREACH",                             icmp6stat.icp6s_inhist[ICMP_UNREACH] );                    fprintf( client, "<tr><td>%s<td>%lld</tr>\n", "REDIRECT",                             icmp6stat.icp6s_inhist[ICMP_REDIRECT] );                    fprintf( client, "<tr><td>%s<td>%lld</tr>\n", "Other",                             icmp6stat.icp6s_inhist[ICMP_SOURCEQUENCH]+                             icmp6stat.icp6s_inhist[ICMP_ROUTERADVERT]+                             icmp6stat.icp6s_inhist[ICMP_ROUTERSOLICIT]+                             icmp6stat.icp6s_inhist[ICMP_TIMXCEED]+

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -