diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 18:29:04 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 18:29:04 -0800 |
commit | e54eebbf1a908d65ee8cf80bab62821c05666d70 (patch) | |
tree | 4b825dc642cb6eb9a060e54bf8d69288fbee4904 /toolbox/netstat.c | |
parent | a1e1c1b106423de09bc918502e7a51d4ffe5a4ae (diff) | |
download | core-e54eebbf1a908d65ee8cf80bab62821c05666d70.tar.gz core-e54eebbf1a908d65ee8cf80bab62821c05666d70.tar.bz2 core-e54eebbf1a908d65ee8cf80bab62821c05666d70.zip |
auto import from //depot/cupcake/@135843
Diffstat (limited to 'toolbox/netstat.c')
-rw-r--r-- | toolbox/netstat.c | 120 |
1 files changed, 0 insertions, 120 deletions
diff --git a/toolbox/netstat.c b/toolbox/netstat.c deleted file mode 100644 index 640430925..000000000 --- a/toolbox/netstat.c +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright (c) 2008, The Android Open Source Project - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Google, Inc. nor the names of its contributors - * may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include <stdio.h> -#include <stdlib.h> - -typedef union iaddr iaddr; - -union iaddr { - unsigned u; - unsigned char b[4]; -}; - -static const char *state2str(unsigned state) -{ - switch(state){ - case 0x1: return "ESTABLISHED"; - case 0x2: return "SYN_SENT"; - case 0x3: return "SYN_RECV"; - case 0x4: return "FIN_WAIT1"; - case 0x5: return "FIN_WAIT2"; - case 0x6: return "TIME_WAIT"; - case 0x7: return "CLOSE"; - case 0x8: return "CLOSE_WAIT"; - case 0x9: return "LAST_ACK"; - case 0xA: return "LISTEN"; - case 0xB: return "CLOSING"; - default: return "UNKNOWN"; - } -} - -void addr2str(iaddr addr, unsigned port, char *buf) -{ - if(port) { - snprintf(buf, 64, "%d.%d.%d.%d:%d", - addr.b[0], addr.b[1], addr.b[2], addr.b[3], port); - } else { - snprintf(buf, 64, "%d.%d.%d.%d:*", - addr.b[0], addr.b[1], addr.b[2], addr.b[3]); - } -} - -int netstat_main(int argc, char *argv[]) -{ - char buf[512]; - char lip[64]; - char rip[64]; - iaddr laddr, raddr; - unsigned lport, rport, state, txq, rxq, num; - int n; - FILE *fp; - - printf("Proto Recv-Q Send-Q Local Address Foreign Address State\n"); - - fp = fopen("/proc/net/tcp", "r"); - if(fp != 0) { - fgets(buf, 512, fp); - while(fgets(buf, 512, fp)){ - n = sscanf(buf, " %d: %x:%x %x:%x %x %x:%x", - &num, &laddr.u, &lport, &raddr.u, &rport, - &state, &txq, &rxq); - if(n == 8) { - addr2str(laddr, lport, lip); - addr2str(raddr, rport, rip); - - printf("tcp %6d %6d %-22s %-22s %s\n", - txq, rxq, lip, rip, - state2str(state)); - } - } - fclose(fp); - } - fp = fopen("/proc/net/udp", "r"); - if(fp != 0) { - fgets(buf, 512, fp); - while(fgets(buf, 512, fp)){ - n = sscanf(buf, " %d: %x:%x %x:%x %x %x:%x", - &num, &laddr.u, &lport, &raddr.u, &rport, - &state, &txq, &rxq); - if(n == 8) { - addr2str(laddr, lport, lip); - addr2str(raddr, rport, rip); - - printf("udp %6d %6d %-22s %-22s\n", - txq, rxq, lip, rip); - } - } - fclose(fp); - } - - return 0; -} |