FreeBSD Bugzilla – Attachment 81227 Details for
Bug 116344
[MAINTAINER] emulators/dynamips-devel: [SUMMARIZE CHANGES]
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
dynamips-devel-0.2.8.r1.patch
dynamips-devel-0.2.8.r1.patch (text/plain), 16.94 KB, created by
Pavel Volkov
on 2007-09-14 11:00:06 UTC
(
hide
)
Description:
dynamips-devel-0.2.8.r1.patch
Filename:
MIME Type:
Creator:
Pavel Volkov
Created:
2007-09-14 11:00:06 UTC
Size:
16.94 KB
patch
obsolete
>diff -ruN --exclude=CVS /usr/ports/emulators/dynamips-devel.orig/Makefile /usr/ports/emulators/dynamips-devel/Makefile >--- /usr/ports/emulators/dynamips-devel.orig/Makefile Sat Jun 2 05:12:30 2007 >+++ /usr/ports/emulators/dynamips-devel/Makefile Fri Sep 14 13:09:28 2007 >@@ -6,7 +6,7 @@ > # > > PORTNAME= dynamips >-DISTVERSION= 0.2.7-RC3 >+DISTVERSION= 0.2.8-RC1 > CATEGORIES= emulators > MASTER_SITES= http://www.ipflow.utc.fr/dynamips/ > PKGNAMESUFFIX= -devel >@@ -15,6 +15,8 @@ > COMMENT= Cisco 3600/7200 Simulator > > LIB_DEPENDS= elf.0:${PORTSDIR}/devel/libelf >+ >+CONFLICTS= dynamips-[0-9]* > > USE_GMAKE= yes > USE_GCC= 3.2+ >diff -ruN --exclude=CVS /usr/ports/emulators/dynamips-devel.orig/distinfo /usr/ports/emulators/dynamips-devel/distinfo >--- /usr/ports/emulators/dynamips-devel.orig/distinfo Sat Jun 2 05:12:30 2007 >+++ /usr/ports/emulators/dynamips-devel/distinfo Mon Sep 10 10:54:50 2007 >@@ -1,3 +1,3 @@ >-MD5 (dynamips-0.2.7-RC3.tar.gz) = 9d1d5ab929fda30ea3b4b8d9284edc70 >-SHA256 (dynamips-0.2.7-RC3.tar.gz) = cd1d23fa0122bcec70a4028ce60ae100fbe3d7a599f1bbb1f30f34faa35546c1 >-SIZE (dynamips-0.2.7-RC3.tar.gz) = 522645 >+MD5 (dynamips-0.2.8-RC1.tar.gz) = 39d08f2d20cdd78ef05c50ae86c4b522 >+SHA256 (dynamips-0.2.8-RC1.tar.gz) = 266cd3fe12f643f8c6aaf59ec8b99b20d6fb53ed8032c1984477065ca97ee994 >+SIZE (dynamips-0.2.8-RC1.tar.gz) = 569599 >diff -ruN --exclude=CVS /usr/ports/emulators/dynamips-devel.orig/files/patch-Makefile /usr/ports/emulators/dynamips-devel/files/patch-Makefile >--- /usr/ports/emulators/dynamips-devel.orig/files/patch-Makefile Thu May 3 11:09:41 2007 >+++ /usr/ports/emulators/dynamips-devel/files/patch-Makefile Thu Sep 13 19:55:51 2007 >@@ -1,34 +1,10 @@ >---- Makefile.orig Thu Feb 8 15:23:36 2007 >-+++ Makefile Thu Feb 8 15:34:39 2007 >-@@ -12,6 +12,9 @@ >- # (WinPcap is used for Cygwin) >- HAS_PCAP?=1 >- >-+# Change this to 1 if your system has posix_memalign >-+HAS_POSIX_MEMALIGN?=0 >-+ >- # Current dynamips release >- VERSION_TRAIN=0.2.6 >- VERSION_SUB=-RC5 >-@@ -34,16 +37,17 @@ >- -DJIT_ARCH=\"$(DYNAMIPS_ARCH)\" \ >- -DARCH_INC_FILE=$(ARCH_INC_FILE) -DDYNAMIPS_VERSION=\"$(VERSION)\" \ >- -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE \ >-- -DHAS_RFC2553=$(HAS_RFC2553) >-+ -DHAS_RFC2553=$(HAS_RFC2553) -DHAS_POSIX_MEMALIGN=$(HAS_POSIX_MEMALIGN) >- >--PCAP_LIB=/usr/local/lib/libpcap.a >--#PCAP_LIB=-lpcap >-+#PCAP_LIB=/usr/local/lib/libpcap.a >-+PCAP_LIB=-lpcap >- >- ifeq ($(shell uname), FreeBSD) >- PTHREAD_LIBS?=-pthread >-- CFLAGS+=-I/usr/local/include -I/usr/local/include/libelf $(PTHREAD_CFLAGS) \ >-+ LOCALBASE?=/usr/local >-+ CFLAGS+=-I$(LOCALBASE)/include -I$(LOCALBASE)/include/libelf $(PTHREAD_CFLAGS) \ >- -D_FILE_OFFSET_BITS=64 >-- LIBS=-L/usr/local/lib -L. -lelf $(PTHREAD_LIBS) >+--- Makefile.orig Thu Sep 13 19:55:14 2007 >++++ Makefile Thu Sep 13 19:55:30 2007 >+@@ -52,7 +52,7 @@ >+ LOCALBASE?=/usr/local >+ CFLAGS+=-I$(LOCALBASE)/include -I$(LOCALBASE)/include/libelf \ >+ $(PTHREAD_CFLAGS) -D_FILE_OFFSET_BITS=64 >+- LIBS=-L$(LOCALBASE)/lib -L. -ldl -lelf $(PTHREAD_LIBS) $(LDFLAGS) > + LIBS=-L$(LOCALBASE)/lib -L. -lelf $(PTHREAD_LIBS) $(LDFLAGS) > else > ifeq ($(shell uname), Linux) >diff -ruN --exclude=CVS /usr/ports/emulators/dynamips-devel.orig/files/patch-README /usr/ports/emulators/dynamips-devel/files/patch-README >--- /usr/ports/emulators/dynamips-devel.orig/files/patch-README Thu May 3 11:09:41 2007 >+++ /usr/ports/emulators/dynamips-devel/files/patch-README Thu Sep 13 19:48:11 2007 >@@ -1,6 +1,6 @@ >---- README.orig Fri Apr 6 20:53:59 2007 >-+++ README Fri Apr 6 20:57:02 2007 >-@@ -50,7 +50,7 @@ >+--- README.orig Wed Sep 12 14:35:13 2007 >++++ README Thu Sep 13 19:47:58 2007 >+@@ -52,11 +52,12 @@ > -R <rom_file> : Load an alternate ROM (default: embedded) > -k <clock_div> : Set the clock divisor (default: 4) > >@@ -8,4 +8,9 @@ > + -T [ip_address:]<port> : Console is on TCP <port> > -U <si_desc> : Console in on serial interface <si_desc> > (default is on the terminal) >+ >+ -A <port> : AUX is on TCP <port> >++ (AUX binding IP == Console binding IP) >+ -B <si_desc> : AUX is on serial interface <si_desc> >+ (default is no AUX port) > >diff -ruN --exclude=CVS /usr/ports/emulators/dynamips-devel.orig/files/patch-README.hypervisor /usr/ports/emulators/dynamips-devel/files/patch-README.hypervisor >--- /usr/ports/emulators/dynamips-devel.orig/files/patch-README.hypervisor Thu May 3 11:09:41 2007 >+++ /usr/ports/emulators/dynamips-devel/files/patch-README.hypervisor Thu Jan 1 03:00:00 1970 >@@ -1,11 +0,0 @@ >---- README.hypervisor.orig Wed Mar 21 10:00:28 2007 >-+++ README.hypervisor Wed Mar 21 10:01:22 2007 >-@@ -8,7 +8,7 @@ >- Running dynamips in hypervisor mode >- =================================== >- >--dynamips -H <tcp_port> >-+dynamips -H [ip_address:]<tcp_port> >- >- Managing the hypervisor >- ======================= >diff -ruN --exclude=CVS /usr/ports/emulators/dynamips-devel.orig/files/patch-dev_vtty.c /usr/ports/emulators/dynamips-devel/files/patch-dev_vtty.c >--- /usr/ports/emulators/dynamips-devel.orig/files/patch-dev_vtty.c Thu May 3 11:09:41 2007 >+++ /usr/ports/emulators/dynamips-devel/files/patch-dev_vtty.c Fri Sep 14 10:25:10 2007 >@@ -1,5 +1,5 @@ >---- dev_vtty.c.orig Fri Apr 6 16:44:07 2007 >-+++ dev_vtty.c Fri Apr 6 19:43:37 2007 >+--- dev_vtty.c.orig Fri Sep 7 12:03:11 2007 >++++ dev_vtty.c Fri Sep 14 10:24:02 2007 > @@ -24,6 +24,8 @@ > #include <fcntl.h> > #include <errno.h> >@@ -13,21 +13,18 @@ > #include "dev_c2600.h" > #include "dev_vtty.h" > >-+extern char hypervisor_ip_address[]; >++extern char *hypervisor_ip_address; > + > /* VTTY list */ > static pthread_mutex_t vtty_list_mutex = PTHREAD_MUTEX_INITIALIZER; > static vtty_t *vtty_list = NULL; >-@@ -132,7 +136,11 @@ >+@@ -132,7 +136,8 @@ > > memset(&serv,0,sizeof(serv)); > serv.sin_family = AF_INET; > - serv.sin_addr.s_addr = htonl(INADDR_ANY); >-+ if (strlen(hypervisor_ip_address) != 0 && >-+ inet_addr(hypervisor_ip_address) != INADDR_NONE) >-+ serv.sin_addr.s_addr = inet_addr(hypervisor_ip_address); >-+ else >-+ serv.sin_addr.s_addr = htonl(INADDR_ANY); >++ if (hypervisor_ip_address && strlen(hypervisor_ip_address)) >++ serv.sin_addr.s_addr = inet_addr(hypervisor_ip_address); > serv.sin_port = htons(vtty->tcp_port); > > if (bind(vtty->accept_fd,(struct sockaddr *)&serv,sizeof(serv)) < 0) { >diff -ruN --exclude=CVS /usr/ports/emulators/dynamips-devel.orig/files/patch-dynamips.1 /usr/ports/emulators/dynamips-devel/files/patch-dynamips.1 >--- /usr/ports/emulators/dynamips-devel.orig/files/patch-dynamips.1 Thu May 3 11:09:41 2007 >+++ /usr/ports/emulators/dynamips-devel/files/patch-dynamips.1 Thu Sep 13 19:46:14 2007 >@@ -1,11 +1,11 @@ >---- dynamips.1.orig Wed Feb 14 20:37:58 2007 >-+++ dynamips.1 Fri Apr 6 20:59:41 2007 >+--- dynamips.1.orig Thu Sep 13 18:45:02 2007 >++++ dynamips.1 Thu Sep 13 19:45:49 2007 > @@ -44,7 +44,7 @@ > .SH OPTIONS > A summary of options is included below. > .TP > -.B -H <tcp_port> >-+.B -H [ip_address:]<tcp_port> >++.B -H [<ip_address>:]<tcp_port> > Enable hypervisor mode. > .br > The hypervisor mode of dynamips allows you to run simultaneously >@@ -14,7 +14,15 @@ > > .TP > -.B -T <port> >-+.B -T [ip_address:]<port> >++.B -T [<ip_address>:]<port> > Console is on TCP <port> > .TP > .B -U <si_desc> >+@@ -141,6 +141,7 @@ >+ .TP >+ .B -A <port> >+ AUX is on TCP <port> >++AUX binding IP == Console binding IP >+ .TP >+ .B -B <si_desc> >+ AUX is on serial interface <si_desc> (default is no AUX port) >diff -ruN --exclude=CVS /usr/ports/emulators/dynamips-devel.orig/files/patch-dynamips.c /usr/ports/emulators/dynamips-devel/files/patch-dynamips.c >--- /usr/ports/emulators/dynamips-devel.orig/files/patch-dynamips.c Thu May 3 11:09:41 2007 >+++ /usr/ports/emulators/dynamips-devel/files/patch-dynamips.c Fri Sep 14 10:21:14 2007 >@@ -1,87 +1,56 @@ >---- dynamips.c.orig Wed Feb 14 20:37:58 2007 >-+++ dynamips.c Fri Apr 6 21:11:38 2007 >-@@ -61,6 +61,7 @@ >- /* Hypervisor */ >- int hypervisor_mode = 0; >- int hypervisor_tcp_port = 0; >-+char hypervisor_ip_address[263]="\000"; /* 256(MAXHOSTNAMELEN)+1(:)+5(port)+NULL */ >- >- /* Log file */ >- char *log_file_name = NULL; >-@@ -227,7 +228,7 @@ >- printf("Usage: %s [options] <ios_image>\n\n",argv[0]); >- >- printf("Available options:\n" >-- " -H <tcp_port> : Run in hypervisor mode\n\n" >-+ " -H [ip_address:]<tcp_port> : Run in hypervisor mode\n\n" >- " -P <platform> : Platform to emulate (7200, 3600, " >- "2691, 3725 or 3745) " >- "(default: 7200)\n\n" >-@@ -254,7 +255,7 @@ >+--- dynamips.c.orig Fri Sep 7 12:03:11 2007 >++++ dynamips.c Fri Sep 14 10:18:10 2007 >+@@ -193,7 +193,7 @@ > " -R <rom_file> : Load an alternate ROM (default: embedded)\n" > " -k <clock_div> : Set the clock divisor (default: %d)\n" > "\n" > - " -T <port> : Console is on TCP <port>\n" >-+ " -T [ip_address:]<port> : Console is on TCP <port>\n" >++ " -T [<ip_address>:]<port> : Console is on TCP <port>\n" > " -U <si_desc> : Console in on serial interface <si_desc>\n" > " (default is on the terminal)\n" > "\n" >-@@ -780,6 +781,7 @@ >+@@ -374,6 +374,8 @@ > int instance_id; >- int res,option; >+ int option; > char *str; > + char *index; >++ size_t len; > > /* Get the instance ID */ > instance_id = 0; >-@@ -944,7 +946,15 @@ >+@@ -541,7 +543,25 @@ > /* TCP server for Console Port */ > case 'T': > vm->vtty_con_type = VTTY_TYPE_TCP; > - vm->vtty_con_tcp_port = atoi(optarg); >-+ strncpy(hypervisor_ip_address,optarg,sizeof(hypervisor_ip_address)); >-+ index=strrchr(hypervisor_ip_address,':'); >-+ if (index != NULL) { >-+ *index++='\000'; >-+ vm->vtty_con_tcp_port = atoi(index); >-+ } else { >-+ vm->vtty_con_tcp_port = atoi(hypervisor_ip_address); >-+ hypervisor_ip_address[0]='\000'; >-+ } >++ >++ index = strrchr(optarg,':'); >++ >++ if (!index) { >++ vm->vtty_con_tcp_port = atoi(optarg); >++ } else { >++ len = index - optarg; >++ hypervisor_ip_address = malloc(len + 1); >++ >++ if (!hypervisor_ip_address) { >++ fprintf(stderr,"Unable to set console IP address!\n"); >++ exit(EXIT_FAILURE); >++ } >++ >++ memcpy(hypervisor_ip_address,optarg,len); >++ hypervisor_ip_address[len] = '\0'; >++ >++ vm->vtty_con_tcp_port = atoi(++index); >++ } > break; > > /* Serial interface for Console port */ >-@@ -1061,6 +1071,7 @@ >- static int run_hypervisor(int argc,char *argv[]) >- { >- char *options_list = "H:l:hN:"; >-+ char *index; >- int i,option; >+@@ -687,6 +707,8 @@ > >- for(i=1;i<argc;i++) >-@@ -1079,7 +1090,15 @@ >- { >- /* Hypervisor TCP port */ >- case 'H': >-- hypervisor_tcp_port = atoi(optarg); >-+ strncpy(hypervisor_ip_address,optarg,sizeof(hypervisor_ip_address)); >-+ index=strrchr(hypervisor_ip_address,':'); >-+ if (index != NULL) { >-+ *index++='\000'; >-+ hypervisor_tcp_port = atoi(index); >-+ } else { >-+ hypervisor_tcp_port = atoi(hypervisor_ip_address); >-+ hypervisor_ip_address[0]='\000'; >-+ } >+ memcpy(hypervisor_ip_address,optarg,len); >+ hypervisor_ip_address[len] = '\0'; >++ >++ hypervisor_tcp_port = atoi(++index); >+ } > break; > >- /* Log file */ >-@@ -1244,7 +1263,7 @@ >- /* Free resources used by instance */ >- vm_release(vm); >- } else { >-- hypervisor_tcp_server(hypervisor_tcp_port); >-+ hypervisor_tcp_server(hypervisor_ip_address,hypervisor_tcp_port); >- } >- >- dynamips_reset(); >diff -ruN --exclude=CVS /usr/ports/emulators/dynamips-devel.orig/files/patch-hypervisor.c /usr/ports/emulators/dynamips-devel/files/patch-hypervisor.c >--- /usr/ports/emulators/dynamips-devel.orig/files/patch-hypervisor.c Thu May 3 11:09:41 2007 >+++ /usr/ports/emulators/dynamips-devel/files/patch-hypervisor.c Thu Jan 1 03:00:00 1970 >@@ -1,20 +0,0 @@ >---- hypervisor.c.orig Wed Mar 21 11:11:12 2007 >-+++ hypervisor.c Wed Mar 21 11:29:55 2007 >-@@ -535,7 +535,7 @@ >- } >- >- /* Hypervisor TCP server */ >--int hypervisor_tcp_server(int tcp_port) >-+int hypervisor_tcp_server(char* ip_address,int tcp_port) >- { >- int fd_array[HYPERVISOR_MAX_FD]; >- struct sockaddr_storage remote_addr; >-@@ -565,7 +565,7 @@ >- if (!tcp_port) >- tcp_port = HYPERVISOR_TCP_PORT; >- >-- fd_count = ip_listen(tcp_port,SOCK_STREAM,HYPERVISOR_MAX_FD,fd_array); >-+ fd_count = ip_listen(ip_address,tcp_port,SOCK_STREAM,HYPERVISOR_MAX_FD,fd_array); >- >- if (fd_count <= 0) { >- fprintf(stderr,"Hypervisor: unable to create TCP sockets.\n"); >diff -ruN --exclude=CVS /usr/ports/emulators/dynamips-devel.orig/files/patch-hypervisor.h /usr/ports/emulators/dynamips-devel/files/patch-hypervisor.h >--- /usr/ports/emulators/dynamips-devel.orig/files/patch-hypervisor.h Thu May 3 11:09:41 2007 >+++ /usr/ports/emulators/dynamips-devel/files/patch-hypervisor.h Thu Jan 1 03:00:00 1970 >@@ -1,10 +0,0 @@ >---- hypervisor.h.orig Wed Mar 21 10:58:06 2007 >-+++ hypervisor.h Wed Mar 21 11:09:40 2007 >-@@ -136,6 +136,6 @@ >- int hypervisor_stopsig(void); >- >- /* Hypervisor TCP server */ >--int hypervisor_tcp_server(int tcp_port); >-+int hypervisor_tcp_server(char *ip_address,int tcp_port); >- >- #endif >diff -ruN --exclude=CVS /usr/ports/emulators/dynamips-devel.orig/files/patch-net.c /usr/ports/emulators/dynamips-devel/files/patch-net.c >--- /usr/ports/emulators/dynamips-devel.orig/files/patch-net.c Thu May 3 11:09:41 2007 >+++ /usr/ports/emulators/dynamips-devel/files/patch-net.c Thu Jan 1 03:00:00 1970 >@@ -1,38 +0,0 @@ >---- net.c.orig Wed Mar 21 11:34:17 2007 >-+++ net.c Wed Mar 21 11:55:29 2007 >-@@ -353,7 +353,7 @@ >- >- #if HAS_RFC2553 >- /* Listen on the specified port */ >--int ip_listen(int port,int sock_type,int max_fd,int fd_array[]) >-+int ip_listen(char *ip_address,int port,int sock_type,int max_fd,int fd_array[]) >- { >- struct addrinfo hints,*res,*res0; >- char port_str[20]; >-@@ -370,7 +370,7 @@ >- >- snprintf(port_str,sizeof(port_str),"%d",port); >- >-- if ((error = getaddrinfo(NULL,port_str,&hints,&res0)) != 0) { >-+ if ((error = getaddrinfo((strlen(ip_address)==0)?NULL:ip_address,port_str,&hints,&res0)) != 0) { >- fprintf(stderr,"ip_listen: %s", gai_strerror(error)); >- return(-1); >- } >-@@ -405,7 +405,7 @@ >- } >- #else >- /* Listen on the specified port */ >--int ip_listen(int port,int sock_type,int max_fd,int fd_array[]) >-+int ip_listen(char *ip_address,int port,int sock_type,int max_fd,int fd_array[]) >- { >- struct sockaddr_in sin; >- int i,sck,reuse=1; >-@@ -422,6 +422,8 @@ >- memset(&sin,0,sizeof(sin)); >- sin.sin_family = PF_INET; >- sin.sin_port = htons(port); >-+ if (strlen(ip_address) != 0 && inet_addr(ip_address) != INADDR_NONE) >-+ sin.sin_addr = inet_addr(ip_address); >- >- setsockopt(fd_array[0],SOL_SOCKET,SO_REUSEADDR,&reuse,sizeof(reuse)); >- >diff -ruN --exclude=CVS /usr/ports/emulators/dynamips-devel.orig/files/patch-net.h /usr/ports/emulators/dynamips-devel/files/patch-net.h >--- /usr/ports/emulators/dynamips-devel.orig/files/patch-net.h Thu May 3 11:09:41 2007 >+++ /usr/ports/emulators/dynamips-devel/files/patch-net.h Thu Jan 1 03:00:00 1970 >@@ -1,10 +0,0 @@ >---- net.h.orig Wed Mar 21 11:32:05 2007 >-+++ net.h Wed Mar 21 11:33:28 2007 >-@@ -218,6 +218,6 @@ >- int udp_connect(int local_port,char *remote_host,int remote_port); >- >- /* Listen on the specified port */ >--int ip_listen(int port,int sock_type,int max_fd,int fd_array[]); >-+int ip_listen(char *ip_address,int port,int sock_type,int max_fd,int fd_array[]); >- >- #endif >diff -ruN --exclude=CVS /usr/ports/emulators/dynamips-devel.orig/files/patch-utils.c /usr/ports/emulators/dynamips-devel/files/patch-utils.c >--- /usr/ports/emulators/dynamips-devel.orig/files/patch-utils.c Thu May 3 11:09:41 2007 >+++ /usr/ports/emulators/dynamips-devel/files/patch-utils.c Thu Jan 1 03:00:00 1970 >@@ -1,11 +0,0 @@ >---- utils.c.orig Wed Mar 8 22:53:21 2006 >-+++ utils.c Wed Mar 8 22:53:37 2006 >-@@ -187,7 +187,7 @@ >- { >- void *p; >- >--#ifdef __linux__ >-+#if defined(__linux__) || HAS_POSIX_MEMALIGN >- if (posix_memalign((void *)&p,boundary,size)) >- #else >- #ifdef __CYGWIN__ >diff -ruN --exclude=CVS /usr/ports/emulators/dynamips-devel.orig/files/patch-utils.h /usr/ports/emulators/dynamips-devel/files/patch-utils.h >--- /usr/ports/emulators/dynamips-devel.orig/files/patch-utils.h Thu May 3 11:09:41 2007 >+++ /usr/ports/emulators/dynamips-devel/files/patch-utils.h Thu Jan 1 03:00:00 1970 >@@ -1,20 +0,0 @@ >---- utils.h.orig Wed Feb 14 20:37:58 2007 >-+++ utils.h Tue Feb 20 18:56:54 2007 >-@@ -12,6 +12,8 @@ >- #include <sys/time.h> >- #include <time.h> >- #include <netinet/in.h> >-+#include <pthread.h> >-+#include <signal.h> >- >- /* True/False definitions */ >- #ifndef FALSE >-@@ -35,6 +37,8 @@ >- #elif defined(__i386) || defined(__i386__) || defined(i386) >- #define ARCH_BYTE_ORDER ARCH_LITTLE_ENDIAN >- #elif defined(__x86_64__) >-+#define ARCH_BYTE_ORDER ARCH_LITTLE_ENDIAN >-+#elif defined(__ia64__) >- #define ARCH_BYTE_ORDER ARCH_LITTLE_ENDIAN >- #endif >-
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 116344
: 81227