/*
 * NETSTAT resources
 *
 * Copyright 2012 André Hentschel
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#include "netstat.h"

#pragma makedep po

LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT

STRINGTABLE
{
  IDS_TCP_ACTIVE_CONN, "Active Connections"
  IDS_TCP_PROTO,       "Proto"
  IDS_TCP_LOCAL_ADDR,  "Local Address"
  IDS_TCP_REMOTE_ADDR, "Foreign Address"
  IDS_TCP_STATE,       "State"
  IDS_ETH_STAT,        "Interface Statistics"
  IDS_ETH_SENT,        "Sent"
  IDS_ETH_RECV,        "Received"
  IDS_ETH_BYTES,       "Bytes"
  IDS_ETH_UNICAST,     "Unicast packets"
  IDS_ETH_NUNICAST,    "Non-unicast packets"
  IDS_ETH_DISCARDS,    "Discards"
  IDS_ETH_ERRORS,      "Errors"
  IDS_ETH_UNKNOWN,     "Unknown protocols"
  IDS_TCP_STAT,        "TCP Statistics for IPv4"
  IDS_TCP_ACTIVE_OPEN, "Active Opens"
  IDS_TCP_PASSIV_OPEN, "Passive Opens"
  IDS_TCP_FAILED_CONN, "Failed Connection Attempts"
  IDS_TCP_RESET_CONN,  "Reset Connections"
  IDS_TCP_CURR_CONN,   "Current Connections"
  IDS_TCP_SEGM_RECV,   "Segments Received"
  IDS_TCP_SEGM_SENT,   "Segments Sent"
  IDS_TCP_SEGM_RETRAN, "Segments Retransmitted"
  IDS_UDP_STAT,        "UDP Statistics for IPv4"
  IDS_UDP_DGRAMS_RECV, "Datagrams Received"
  IDS_UDP_NO_PORTS,    "No Ports"
  IDS_UDP_RECV_ERRORS, "Receive Errors"
  IDS_UDP_DGRAMS_SENT, "Datagrams Sent"
}
