diff options
author | Denys Dmytriyenko <denis@denix.org> | 2009-03-17 14:32:59 -0400 |
---|---|---|
committer | Denys Dmytriyenko <denis@denix.org> | 2009-03-17 14:32:59 -0400 |
commit | 709c4d66e0b107ca606941b988bad717c0b45d9b (patch) | |
tree | 37ee08b1eb308f3b2b6426d5793545c38396b838 /packages/net-tools/files/net-tools-1.60-duplicate-tcp.patch | |
parent | fa6cd5a3b993f16c27de4ff82b42684516d433ba (diff) |
rename packages/ to recipes/ per earlier agreement
See links below for more details:
http://thread.gmane.org/gmane.comp.handhelds.openembedded/21326
http://thread.gmane.org/gmane.comp.handhelds.openembedded/21816
Signed-off-by: Denys Dmytriyenko <denis@denix.org>
Acked-by: Mike Westerhof <mwester@dls.net>
Acked-by: Philip Balister <philip@balister.org>
Acked-by: Khem Raj <raj.khem@gmail.com>
Acked-by: Marcin Juszkiewicz <hrw@openembedded.org>
Acked-by: Koen Kooi <koen@openembedded.org>
Acked-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
Diffstat (limited to 'packages/net-tools/files/net-tools-1.60-duplicate-tcp.patch')
-rw-r--r-- | packages/net-tools/files/net-tools-1.60-duplicate-tcp.patch | 194 |
1 files changed, 0 insertions, 194 deletions
diff --git a/packages/net-tools/files/net-tools-1.60-duplicate-tcp.patch b/packages/net-tools/files/net-tools-1.60-duplicate-tcp.patch deleted file mode 100644 index 316ac65a5b..0000000000 --- a/packages/net-tools/files/net-tools-1.60-duplicate-tcp.patch +++ /dev/null @@ -1,194 +0,0 @@ ---- net-tools-1.60/netstat.c.foo Mon Apr 22 14:25:20 2002 -+++ net-tools-1.60/netstat.c Mon Apr 22 14:25:22 2002 -@@ -435,6 +435,162 @@ - " will not be shown, you would have to be root to see it all.)\n")); - } - -+#define TCP_HASH_SIZE 1009 -+ -+static struct tcp_node { -+ struct tcp_node *next; -+ char *socket_pair; -+} *tcp_node_hash[TCP_HASH_SIZE]; -+ -+static unsigned int tcp_node_compute_string_hash(const char *p) -+{ -+ unsigned int h = *p; -+ -+ if (h) -+ for (p += 1; *p != '\0'; p++) -+ h = (h << 5) - h + *p; -+ -+ return h; -+} -+ -+#define TCP_NODE_HASH_STRING(x) \ -+ (tcp_node_compute_string_hash(x) % TCP_HASH_SIZE) -+ -+static void tcp_node_hash_clear(void) -+{ -+ int i; -+ struct tcp_node *next_node; -+ struct tcp_node *tmp_node; -+ for (i=0; i < TCP_HASH_SIZE; i++) { -+ if (tcp_node_hash[i]) { -+ /* free the children of this hash bucket */ -+ next_node = tcp_node_hash[i]->next; -+ while (next_node) { -+ tmp_node = next_node; -+ next_node = next_node->next; -+ free(tmp_node->socket_pair); -+ free(tmp_node); -+ } -+ -+ /* free the bucket itself */ -+ free(tcp_node_hash[i]); -+ tcp_node_hash[i] = NULL; -+ } -+ } -+} -+ -+/* This function takes a socket pair string. If it already exists in -+ the hash it returns -1, otherwise it returns 0. */ -+ -+static int tcp_node_hash_check_and_append(const char *local_addr, -+ int local_port, -+ const char *rem_addr, -+ int rem_port) -+{ -+ unsigned int hash_val; -+ struct tcp_node *tmp_node; -+ int tmp_string_len; -+ char *tmp_string;; -+ -+ /* Size of the string is the size of the two lengths of the address -+ strings plus enough sizes for the colons and the ports. */ -+ tmp_string_len = strlen(local_addr) + strlen(rem_addr) + 32; -+ tmp_string = malloc(tmp_string_len); -+ if (!tmp_string) -+ return 0; -+ -+ if (snprintf(tmp_string, tmp_string_len - 1, "%s:%d:%s:%d", -+ local_addr, local_port, rem_addr, rem_port) < 0) { -+ free(tmp_string); -+ return 0; -+ } -+ -+ hash_val = TCP_NODE_HASH_STRING(tmp_string); -+ -+ /* See if we have to allocate this node */ -+ if (!tcp_node_hash[hash_val]) { -+ tcp_node_hash[hash_val] = malloc(sizeof(struct tcp_node)); -+ if (!tcp_node_hash[hash_val]) { -+ free(tmp_string); -+ return 0; -+ } -+ -+ memset(tcp_node_hash[hash_val], 0, sizeof(struct tcp_node)); -+ -+ /* Stuff this new value into the hash bucket and return early */ -+ tcp_node_hash[hash_val]->socket_pair = tmp_string; -+ return 0; -+ } -+ -+ /* Try to find the value in the hash bucket. */ -+ tmp_node = tcp_node_hash[hash_val]; -+ while (tmp_node) { -+ if (!strcmp(tmp_node->socket_pair, tmp_string)) { -+ free(tmp_string); -+ return -1; -+ } -+ tmp_node = tmp_node->next; -+ } -+ -+ /* If we got this far it means that it isn't in the hash bucket. -+ Add it to the front since it's faster that way. */ -+ tmp_node = tcp_node_hash[hash_val]; -+ -+ tcp_node_hash[hash_val] = malloc(sizeof(struct tcp_node)); -+ if (!tcp_node_hash[hash_val]) { -+ free(tmp_string); -+ tcp_node_hash[hash_val] = tmp_node; -+ return 0; -+ } -+ -+ tcp_node_hash[hash_val]->socket_pair = tmp_string; -+ tcp_node_hash[hash_val]->next = tmp_node; -+ -+ return 0; -+} -+ -+#if 0 -+static void tcp_node_hash_report_bucket_size(void) -+{ -+ int max = 0; -+ int min = 0; -+ int num = 0; -+ int total = 0; -+ struct tcp_node *tmp_node; -+ int tmp, i; -+ float avg; -+ -+ for (i=0; i < TCP_HASH_SIZE; i++) { -+ tmp_node = tcp_node_hash[i]; -+ if (!tmp_node) -+ continue; -+ -+ tmp = 0; -+ -+ num++; -+ tmp = 1; -+ -+ while (tmp_node) { -+ tmp++; -+ tmp_node = tmp_node->next; -+ } -+ -+ total += tmp; -+ if (tmp > max) -+ max = tmp; -+ -+ if (min == 0 || tmp < min) -+ min = tmp; -+ } -+ -+ avg = (float)total/(float)num; -+ -+ printf("%d nodes in %d buckets min/max/avg %d/%d/%.2f\n", -+ total, num, min, max, avg); -+ -+} -+#endif -+ - #if HAVE_AFNETROM - static const char *netrom_state[] = - { -@@ -752,11 +908,20 @@ - fprintf(stderr, _("warning, got bogus tcp line.\n")); - return; - } -+ - if ((ap = get_afntype(((struct sockaddr *) &localaddr)->sa_family)) == NULL) { - fprintf(stderr, _("netstat: unsupported address family %d !\n"), - ((struct sockaddr *) &localaddr)->sa_family); - return; - } -+ -+ /* make sure that we haven't seen this socket pair before */ -+ if (tcp_node_hash_check_and_append(local_addr, local_port, -+ rem_addr, rem_port) < 0) { -+ /* fprintf(stderr, _("warning, got duplicate tcp line.\n")); */ -+ return; -+ } -+ - if (state == TCP_LISTEN) { - time_len = 0; - retr = 0L; -@@ -1849,6 +2014,7 @@ - break; - sleep(1); - prg_cache_clear(); -+ tcp_node_hash_clear(); - } - return (i); - } |