1Description of the hypervisor mode
2==================================
3
4The hypervisor mode of dynamips allows you to run simultaneously
5many virtual router instances, and to simulate ATM, Ethernet
6or Frame-Relay networks.
7
8Available since version 0.2.5.
9
10Running dynamips in hypervisor mode
11===================================
12
13dynamips -H [<ip_address>:]<tcp_port>
14
15Managing the hypervisor
16=======================
17
18You can connect directly to the TCP control port with telnet, or use
19dynagen/dynagui that will pass commands transparently. The second method
20is highly recommended.
21
22The command syntax is simple: <module> <function> [arguments...]
23For example: "vm start R1" starts virtual instance named "R1".
24
25The modules that are currently defined are given below:
26
27 * hypervisor : General hypervisor management
28 * vm : General virtual machine (VM) management
29 * vm_debug : General virtual machine (VM) debugging
30 * c7200 : Virtual instances of Cisco 7200
31 * c3745 : Virtual instances of Cisco 3745
32 * c3725 : Virtual instances of Cisco 3725
33 * c3600 : Virtual instances of Cisco 3600
34 * c2691 : Virtual instances of Cisco 2691
35 * c2600 : Virtual instances of Cisco 2600
36 * c1700 : Virtual instances of Cisco 1700
37 * nio : Network Input/Output (NIO) descriptors
38 * nio_bridge : NIO bridges (shared media)
39 * atmsw : ATM switches
40 * atm_bridge : ATM bridges
41 * frsw : Frame-Relay switches
42 * ethsw : Ethernet switches
43 * object_store : Object store
44
45
46Hypervisor management module ("hypervisor")
47============================================
48
49* "hypervisor version" : Display the version of dynamips.
50
51* "hypervisor module_list" : Display the module list.
52
53* "hypervisor cmd_list <module>" : Display commands recognized by the
54 specified module.
55
56* "hypervisor close" : Close the current session.
57
58* "hypervisor stop" : Destroy all objects and stop hypervisor.
59
60* "hypervisor reset" : Destroy all objects. (used to get an empty
61 configuration)
62
63* "hypervisor working_dir <directory>" : Set the directory to use to store
64 files.
65
66* "hypervisor save_config <filename>" : Save the configuration of all objects
67 into the specified file.
68
69* "hypervisor parser_test [<a1> [... <a10>]]" : Display up to 10 arguments.
70 (since version 0.2.6-RC1)
71
72* "hypervisor tsg_stats" : Dump statistics about JIT code sharing to
73 the console. (since version 0.2.8-RC3, unstable)
74
75Virtual Machine module ("vm")
76=============================
77
78* "vm list" : List all VM instances.
79 (c7200, c3745, c3725, c3600, c2691, c2600, c1700)
80
81* "vm list_con_ports" : List all VM console TCP port.
82 (since version 0.2.6-RC5)
83
84* "vm create <instance_name> <instance_id> <platform>" :
85 Create a new router instance.
86 The ID must be unique and is used to name files on disk.
87 (since version 0.2.8-RC1)
88
89* "vm rename <instance_name> <new_name>" : Rename a router instance.
90 (since version 0.2.11)
91
92* "vm delete <instance_name>" : Delete the specified instance.
93 (since version 0.2.8-RC1)
94
95* "vm clean_delete <instance_name>" : Delete the specified instance and all
96 the related files (best effort). (since version 0.2.11)
97
98* "vm start <instance_name>" : Start the instance.
99 At least the IOS image must be set.
100 (since version 0.2.8-RC1)
101
102* "vm stop <instance_name>" : Stop the instance. The settings are kept.
103 (since version 0.2.8-RC1)
104
105* "vm get_status <instance_name>" : Get the status of a VM instance.
106 Return values: 0=inactive, 1=shutting down, 2=running, 3=suspended.
107 (since version 0.2.11)
108
109* "vm set_tsg <instance_name> <group_id>" : Set translation sharing group.
110 (since version 0.2.8-RC3-community, unstable)
111
112* "vm set_debug_level <instance_name> <level>" : Set the debug level
113 (which is a number) for a VM. By default, no specific debug is enabled
114 (level = 0).
115
116* "vm set_ios <instance_name> <ios_file>" : Set the IOS image file to
117 use. There is no default.
118
119* "vm set_config <instance_name> <startup_file> [<private_file>]" :
120 Set the config files that are pushed to startup-config and
121 private-config in NVRAM when the instance is started.
122 To keep existing data, use an empty string ('') for the filename.
123 The optional <private_file> is an empty string by default.
124 (supports <private_file> since version 0.2.10)
125
126* "vm extract_config <instance_name>" : Get the contents of the config files
127 startup-config and private-config from NVRAM. The data of each file is
128 encoded in a Base64 string, surrounded by single quotes.
129 (returns private-config since version 0.2.10)
130
131* "vm push_config <instance_name> <startup_cfg> [<private_cfg>]" :
132 Push configuration to the config files startup-config and private-config
133 in NVRAM.
134 The data is a Base64 encoded string, or '(keep)' to keep existing data.
135 The optional <private_cfg> is '(keep)' by default.
136 (supports <private_cfg> since version 0.2.11)
137
138* "vm set_ram <instance_name> <ram_size>" : Set the RAM size, specified
139 in Mbytes.
140
141* "vm set_nvram <instance_name> <nvram_size>" : Set the NVRAM size,
142 specified in Kbytes.
143
144* "vm set_ram_mmap <instance_name> <0|1>" : Enable/Disable use
145 of a mapped file to simulate router memory. By default, a mapped file
146 is used. This is a bit slower, but requires less memory.
147
148* "vm set_sparse_mem <instance_name> <0|1>" : Enable/disable use of
149 sparse memory. (since version 0.2.7-RC1)
150
151* "vm suspend <instance_name>" : Suspend execution of the instance.
152
153* "vm resume <instance_name>" : Resume execution of the instance.
154
155* "vm set_clock_divisor <instance_name> <clock_div>" : Set the clock
156 divisor value. The higher is the value, the faster is the clock in the
157 virtual machine. The default is 4, but it is often required to adjust it.
158
159* "vm set_blk_direct_jump <instance_name> <0|1>" : Enable/disable use
160 of block direct jump. (compatibility option, since version 0.2.7-RC2)
161
162* "vm set_idle_pc <instance_name> <pc_value>" : Set the idle Pointer
163 Counter (PC). You must determine it through the method explained in the
164 main README file.
165
166* "vm set_idle_pc_online <instace_name> <cpu_id> <pc_value>" :
167 Set the idle PC value when the CPU is online.
168 (since version 0.2.6-RC2)
169
170* "vm get_idle_pc_prop <instance_name> <cpu_id>" :
171 Get the idle PC proposals.
172 Takes 1000 measurements and records up to 10 idle PC proposals.
173 There is a 10ms wait between each measurement.
174 (since version 0.2.6-RC2)
175
176* "vm show_idle_pc_prop <instance_name> <cpu_id>" :
177 Dump the idle PC proposals. (since version 0.2.6-RC2)
178
179* "vm set_idle_max <instance_name> <cpu_id> <idle_max>" :
180 Set CPU idle max value. (since version 0.2.6-RC2)
181
182* "vm set_idle_sleep_time <instance_name> <cpu_id> <idle_sleep_time>" :
183 Set CPU idle sleep time value. (since version 0.2.6-RC2)
184
185* "vm show_timer_drift <instance_name> <cpu_id>" :
186 Show info about potential timer drift.
187 (since version 0.2.6-RC3)
188
189* "vm set_ghost_file <instance_name> <ghost_ram_filename>" :
190 Set ghost RAM file. (since version 0.2.6-RC3,
191 needs an extra bogus argument before version 0.2.6-RC4)
192
193* "vm set_ghost_status <instance_name> <ghost_status>" :
194 Set ghost RAM status. (since version 0.2.6-RC3,
195 needs an extra bogus argument before version 0.2.6-RC4)
196
197* "vm set_exec_area <instance_name> <area_size>" : Set the exec area
198 size. The exec area is a pool of host memory used to store pages
199 translated by the JIT (they contain the native code corresponding to MIPS
200 code pages).
201
202* "vm set_disk0 <instance_name> <value>" : Set size of PCMCIA ATA disk0.
203
204* "vm set_disk1 <instance_name> <value>" : Set size of PCMCIA ATA disk1.
205
206* "vm set_conf_reg <instance_name> <value>" : Set the config register
207 value. The default is 0x2102.
208
209* "vm set_con_tcp_port <instance_name> <tcp_port>" : Set the TCP port
210 to use for console. By default, no TCP port is chosen, meaning that you
211 cannot get access to the console.
212
213* "vm set_aux_tcp_port <instance_name> <tcp_port>" : Set the TCP port
214 to use for AUX port. By default, no TCP port is chosen, meaning that you
215 cannot get access to the AUX port.
216
217* "vm cpu_info <instance_name> <cpu_id>" : Show info about the CPU identified
218 by "cpu_id". The boot CPU (which is typically the only CPU) has ID 0.
219
220* "vm cpu_usage <instance_name> <cpu_id>" : Show cpu usage of dynamips in
221 seconds. (experimental)
222 The instance must exist, "cpu_id" is ignored.
223 (since version 0.2.8-RC5-community)
224
225* "vm send_con_msg <instance_name> <str> [<format>]" :
226 (since version 0.2.6-RC3) Send a message on the console.
227 It only writes the bytes that fit in the console buffer.
228
229 (since version 0.2.14)
230 The optional argument <format> indicates the string format.
231 On success it will report "X byte(s) written".
232
233 String formats:
234 * plain - plain string (default, old behavior)
235 * base64 - base64 encoded string
236
237* "vm send_aux_msg <instance_name> <str> [<format>]" :
238 (since version 0.2.6-RC3) Send a message on the AUX port.
239 It only writes the bytes that fit in the aux buffer.
240
241 (since version 0.2.14)
242 The optional argument <format> indicates the string format.
243 On success it will report "X byte(s) written".
244
245 String formats:
246 * plain - plain string (default, old behavior)
247 * base64 - base64 encoded string
248
249* "vm slot_bindings <instance_name>" :
250 Show slot bindings. (since version 0.2.8-RC1)
251
252* "vm slot_nio_bindings <instance_name> <slot_id>" :
253 Show NIO bindings for the specified slot. (since version 0.2.8-RC1)
254
255* "vm slot_add_binding <instance_name> <slot_id> <port_id> <dev_type>" :
256 Add a slot binding. (since version 0.2.8-RC1)
257
258* "vm slot_remove_binding <instance_name> <slot_id> <port_id>" :
259 Remove a slot binding . (since version 0.2.8-RC1)
260
261* "vm slot_add_nio_binding <instance_name> <slot_id> <port_id> <nio_name>" :
262 Add a NIO binding for a slot/port. (since version 0.2.8-RC1)
263
264* "vm slot_remove_nio_binding <instance_name> <slot_id> <port_id>" :
265 Remove a NIO binding for a slot/port. (since version 0.2.8-RC1)
266
267* "vm slot_enable_nio <instance_name> <slot_id> <port_id>" :
268 Enable NIO of the specified slot/port. (since version 0.2.8-RC1)
269
270* "vm slot_disable_nio <instance_name> <slot_id> <port_id>" :
271 Disable NIO of the specified slot/port. (since version 0.2.8-RC1)
272
273* "vm slot_oir_start <instance_name> <slot_id> <subslot_id>" :
274 OIR to start a slot/subslot. (since version 0.2.8-RC3-community)
275
276* "vm slot_oir_stop <isntance_name> <slot_id> <subslot_id>" :
277 OIR to stop a slot/subslot. (since version 0.2.8-RC3-community)
278
279
280Virtual Machine debugging module ("vm_debug")
281=======================================
282
283Available since version 0.2.6-RC1.
284
285* "vm_debug show_cpu_regs <instance_name> <cpu_id>" :
286 Dump CPU registers to the console.
287
288* "vm_debug show_cpu_mmu <instance_name> <cpu_id>" :
289 Dump CPU MMU info to the console. (since version 0.2.7-RC1)
290
291* "vm_debug set_cpu_reg <instance_name> <cpu_id> <reg_id> <value>" :
292 Set the value of a CPU register.
293
294* "vm_debug add_cpu_breakpoint <instance_name> <cpu_id> <address>" :
295 Add a breakpoint.
296
297* "vm_debug remove_cpu_breakpoint <instance_name> <cpu_id> <address>" :
298 Remove a breakpoint.
299
300* "vm_debug pmem_w32 <instance_name> <cpu_id> <address> <value>" :
301 Write a 32-bit memory word to physical memory.
302
303* "vm_debug pmem_r32 <instance_name> <cpu_id> <address>" :
304 Read a 32-bit memory word from physical memory.
305
306* "vm_debug pmem_w16 <instance_name> <cpu_id> <address> <value>" :
307 Write a 16-bit memory word to physical memory.
308
309* "vm_debug pmem_r16 <instance_name> <cpu_id> <address>" :
310 Read a 16-bit memory word from physical memory.
311
312* "vm_debug pmem_cfind <instance_name> <cpu_id> <bytes> [<first> [<last>]]" :
313 Find a sequence of bytes in physical memory interval [first,last].
314 The byte sequence is composed of hexadecimal characters and must have a length
315 multiple of 2. The interval defaults to the complete memory space.
316 Only the memory of cacheable devices (ram, rom, disks, ...) is searched.
317 (since version 0.2.12)
318
319
320Virtual Cisco 7200 instances module ("c7200")
321==============================================
322
323* "c7200 list" : List all existing Cisco 7200 instances.
324
325* "c7200 set_npe <instance_name> <npe_name>" : Set the NPE model.
326 For example: npe-100, npe-400, ... The default is "npe-400".
327
328* "c7200 set_midplane <instance_name> <midplane_name>" : Set the midplane
329 model, it can be either "std" or "vxr". The default is "vxr".
330
331* "c7200 get_mac_addr <instance_name>" : Get the base MAC
332 address of the router. By default, the address is automatically generated
333 with this pattern : ca<instance_id>.<process_pid>.0000 (Cisco format).
334 (since version 0.2.11)
335
336* "c7200 set_mac_addr <instance_name> <mac_addr>" : Set the base MAC
337 address of the router. The MAC address patern can be the Cisco format
338 (e.g. ca01.1234.0000) or the standard format (e.g. ca:01:12:34:00:00).
339
340* "c7200 set_system_id <instance_name> <system_id>" :
341 Set the system id. (since version 0.2.8-RC3-community)
342
343* "c7200 set_temp_sensor <instance_name> <sensor_id> <temperature>" :
344 Set temperature for a DS1620 sensor.
345 This can be used to simulate environmental problems like overheat.
346 (since version 0.2.8-RC3-community)
347
348* "c7200 set_power_supply <instance_name> <power_supply_id> <0|1>" :
349 Set power supply status.
350 This can be used to simulate environmental problems like power loss.
351 (since version 0.2.8-RC3-community)
352
353* "c7200 show_hardware <instance_name>" : Display virtual hardware info
354 about the instance.
355
356
357Virtual Cisco 3745 instances module ("c3745")
358==============================================
359
360Available since version 0.2.6-RC3.
361
362* "c3745 list" : List all existing Cisco 3745 instances.
363
364* "c3745 set_iomem <instance_name> <size>" : Set the I/O mem size.
365
366* "c3745 get_mac_addr <instance_name> <mac_addr>" : Get the base MAC
367 address of the router. By default, the address is automatically generated
368 with this pattern : c4<instance_id>.<process_pid>.0000 (Cisco format).
369 (since version 0.2.11)
370
371* "c3745 set_mac_addr <instance_name> <mac_addr>" : Set the base MAC
372 address of the router. The MAC address patern can be the Cisco format
373 (e.g. c401.1234.0000) or the standard format (e.g. c4:01:12:34:00:00).
374
375* "c3745 set_system_id <instance_name> <system_id>" :
376 Set the system id. (since version 0.2.8-RC3-community)
377
378* "c3745 show_hardware <instance_name>" : Display virtual hardware info
379 about the instance.
380
381
382Virtual Cisco 3725 instances module ("c3725")
383==============================================
384
385Available since version 0.2.6-RC3.
386
387* "c3725 list" : List all existing Cisco 3725 instances.
388
389* "c3725 set_iomem <instance_name> <size>" : Set the I/O mem size.
390
391* "c3725 get_mac_addr <instance_name> <mac_addr>" : Get the base MAC
392 address of the router. By default, the address is automatically generated
393 with this pattern : c2<instance_id>.<process_pid>.0000 (Cisco format).
394 (since version 0.2.11)
395
396* "c3725 set_mac_addr <instance_name> <mac_addr>" : Set the base MAC
397 address of the router. The MAC address patern can be the Cisco format
398 (e.g. c201.1234.0000) or the standard format (e.g. c2:01:12:34:00:00).
399
400* "c3725 set_system_id <instance_name> <system_id>" :
401 Set the system id. (since version 0.2.8-RC3-community)
402
403* "c3725 show_hardware <instance_name>" : Display virtual hardware info
404 about the instance.
405
406
407Virtual Cisco 3600 instances module ("c3600")
408==============================================
409
410* "c3600 list" : List all existing Cisco 3600 instances.
411
412* "c3600 set_chassis <instance_name> <chassis_name>" : Set the chassis model.
413 Possible values: 3620, 3640, 3660. The default is "3640".
414
415* "c3600 set_iomem <instance_name> <size>" : Set the I/O mem size.
416
417* "c3600 get_mac_addr <instance_name> <mac_addr>" : Get the base MAC
418 address of the router. By default, the address is automatically generated
419 with this pattern : cc<instance_id>.<process_pid>.0000 (Cisco format).
420 (since version 0.2.11)
421
422* "c3600 set_mac_addr <instance_name> <mac_addr>" : Set the base MAC
423 address of the router. The MAC address patern can be the Cisco format
424 (e.g. cc01.1234.0000) or the standard format (e.g. cc:01:12:34:00:00).
425
426* "c3600 set_system_id <instance_name> <system_id>" :
427 Set the system id. (since version 0.2.8-RC3-community)
428
429* "c3600 show_hardware <instance_name>" : Display virtual hardware info
430 about the instance.
431
432
433Virtual Cisco 2691 instances module ("c2691")
434==============================================
435
436Available since version 0.2.6-RC3.
437
438* "c2691 list" : List all existing Cisco 2691 instances.
439
440* "c2691 set_iomem <instance_name> <size>" : Set the I/O mem size.
441
442* "c2691 get_mac_addr <instance_name> <mac_addr>" : Get the base MAC
443 address of the router. By default, the address is automatically generated
444 with this pattern : c0<instance_id>.<process_pid>.0000 (Cisco format).
445 (since version 0.2.11)
446
447* "c2691 set_mac_addr <instance_name> <mac_addr>" : Set the base MAC
448 address of the router. The MAC address patern can be the Cisco format
449 (e.g. c001.1234.0000) or the standard format (e.g. c0:01:12:34:00:00).
450
451* "c2691 set_system_id <instance_name> <system_id>" :
452 Set the system id. (since version 0.2.11)
453
454* "c2691 show_hardware <instance_name>" : Display virtual hardware info
455 about the instance.
456
457
458Virtual Cisco 2600 instances module ("c2600")
459==============================================
460
461Available since version 0.2.7-RC1.
462
463* "c2600 list" : List all existing Cisco 2600 instances.
464
465* "c2600 set_chassis <instance_name> <chassis_name>" : Set the chassis model.
466 Possible values: 2610, 2611, 2620, 2621, 2610XM, 2611XM, 2620XM,
467 2621XM, 2650XM, 2651XM. The default is "2610".
468
469* "c2600 set_iomem <instance_name> <size>" : Set the I/O mem size.
470
471* "c2600 get_mac_addr <instance_name> <mac_addr>" : Get the base MAC
472 address of the router. By default, the address is automatically generated
473 with this pattern : c8<instance_id>.<process_pid>.0000 (Cisco format).
474 (since version 0.2.11)
475
476* "c2600 set_mac_addr <instance_name> <mac_addr>" : Set the base MAC
477 address of the router. The MAC address patern can be the Cisco format
478 (e.g. c801.1234.0000) or the standard format (e.g. c8:01:12:34:00:00).
479
480* "c2600 set_system_id <instance_name> <system_id>" :
481 Set the system id. (since version 0.2.8-RC3-community)
482
483* "c2600 show_hardware <instance_name>" : Display virtual hardware info
484 about the instance.
485
486
487Virtual Cisco 1700 instances module ("c1700")
488==============================================
489
490Available since version 0.2.8-RC1.
491
492* "c1700 list" : List all existing Cisco 1700 instances.
493
494* "c1700 set_chassis <instance_name> <chassis_name>" : Set the chassis model.
495 Possible values: 1710, 1720, 1721, 1750, 1751, 1760. The default is "1720".
496
497* "c1700 set_iomem <instance_name> <size>" : Set the I/O mem size.
498
499* "c1700 get_mac_addr <instance_name> <mac_addr>" : Get the base MAC
500 address of the router. By default, the address is automatically generated
501 with this pattern : d0<instance_id>.<process_pid>.0000 (Cisco format).
502 (since version 0.2.11)
503
504* "c1700 set_mac_addr <instance_name> <mac_addr>" : Set the base MAC
505 address of the router. The MAC address patern can be the Cisco format
506 (e.g. d001.1234.0000) or the standard format (e.g. d0:01:12:34:00:00).
507
508* "c1700 set_system_id <instance_name> <system_id>" :
509 Set the system id. (since version 0.2.8-RC3-community)
510
511* "c1700 show_hardware <instance_name>" : Display virtual hardware info
512 about the instance.
513
514
515Network Input/Output (NIO) module ("nio")
516==========================================
517
518* "nio list" : List all exiting NIOs.
519
520* "nio create_udp <nio_name> <local_port> <remote_host> <remote_port>" :
521 Create an UDP NIO with the specified parameters.
522
523* "nio create_udp_auto <nio_name> <local_addr> <local_port_start> <local_port_end>" :
524 Create an auto UDP NIO.
525 (since version 0.2.8-RC3-community)
526
527* "nio connect_udp_auto <nio_name> <remote_host> <remote_port>" :
528 Connect an UDP Auto NIO to a remote host/port.
529 (since version 0.2.8-RC3-community)
530
531* "nio create_unix <nio_name> <local_file> <remote_file>" :
532 Create an UNIX NIO with the specified parameters.
533
534* "nio create_vde <nio_name> <control_file> <local_file>" :
535 Create a VDE NIO with the specified parameters. VDE stands for "Virtual
536 Distributed Ethernet" and is compatible with UML (User-Mode-Linux) switch.
537
538* "nio create_tap <nio_name> <tap_device>" : Create a TAP NIO. TAP devices
539 are supported only on Linux and FreeBSD and require root access.
540
541* "nio create_gen_eth <nio_name> <eth_device>" : Create a generic ethernet
542 NIO, using PCAP (0.9.4 and greater). It requires root access.
543 Available if compiled with GEN_ETH.
544
545* "nio create_linux_eth <nio_name> <eth_device>" : Create a Linux ethernet
546 NIO. It requires root access and is supported only on Linux platforms.
547 Available if compiled with LINUX_ETH.
548
549* "nio create_null <nio_name>" : Create a Null NIO.
550
551* "nio create_fifo <nio_name>" : Create a FIFO NIO.
552
553* "nio crossconnect_fifo <nio_name> <nio_name>" :
554 Establish a cross-connect between 2 FIFO NIO.
555
556* "nio rename <nio_name> <new_name>" : Rename a NIO.
557 (since version 0.2.11)
558
559* "nio delete <nio_name>" : Delete the specified NIO. The NIO can be deleted
560 only when it is not anymore in use by another object.
561
562* "nio set_debug <nio_name> <debug>" : Enable/Disable debugging for the
563 specified NIO. When debugging is enabled, received and emitted packets are
564 displayed at screen. It is mainly used to debug interface drivers.
565
566* "nio bind_filter <nio_name> <direction> <filter_name>" :
567 Bind a packet filter.
568 Direction is 0 for receiving, 1 for sending, 2 for both.
569 Filter "freq_drop" drops packets. Filter "capture" captures
570 packets and is only available if compiled with GEN_ETH.
571
572* "nio unbind_filter <nio_name> <direction>" : Unbind a packet filter.
573
574* "nio setup_filter <nio_name> <direction> [<a3> [...<a10>]]" :
575 Setup a packet filter for a given NIO. The arguments are passed on
576 to the setup function of the filter.
577 Filter "freq_drop" has 1 argument "<frequency>". It will drop
578 everything with a -1 frequency, drop every Nth packet with a
579 positive frequency, or drop nothing.
580 Filter "capture" has 2 arguments "<link_type_name> <output_file>".
581 It will capture packets to the target output file. The link type
582 name is a case-insensitive DLT_ name from the pcap library
583 constants with the DLT_ part removed.
584
585* "nio get_stats <nio_name>" : Get statistics of a NIO.
586 (since version 0.2.8-RC3-community)
587
588* "nio reset_stats <nio_name>" : Reset statistics of a NIO.
589 (since version 0.2.8-RC3-community)
590
591* "nio set_bandwidth <nio_name> <bandwidth>" : Set bandwidth constraint.
592 (since version 0.2.8-RC3-community)
593
594
595NIO bridge module ("nio_bridge")
596=================================
597
598* "nio_bridge list" : List all NIO bridges.
599
600* "nio_bridge create <bridge_name>" : Create a NIO bridge. A NIO bridge
601 acts as a shared media (a kind of hub).
602
603* "nio_bridge rename <bridge_name> <new_name>" : Rename a NIO bridge.
604 (since version 0.2.11)
605
606* "nio_bridge delete <bridge_name>" : Delete a NIO bridge.
607
608* "nio_bridge add_nio <bridge_name> <nio_name>" : Add a NIO as new port
609 in a NIO bridge. The NIO must be created through the "nio" module.
610
611* "nio_bridge remove_nio <bridge_name> <nio_name>" : Remove the specified
612 NIO as member of the NIO bridge.
613
614
615Virtual Ethernet switch module ("ethsw")
616==================================
617
618* "ethsw list" : List all Ethernet switches.
619
620* "ethsw create <switch_name>" : Create a new Ethernet switch.
621
622* "ethsw rename <switch_name> <new_name>" : Rename an Ethernet switch.
623 (since version 0.2.11)
624
625* "ethsw delete <switch_name>" : Delete the specified Ethernet switch.
626
627* "ethsw add_nio <switch_name> <nio_name>" : Add a NIO as new port in an
628 Ethernet switch. The NIO must be created through the "nio" module.
629
630* "ethsw remove_nio <switch_name> <nio_name>" : Remove the specified NIO
631 as member of the Ethernet switch.
632
633* "ethsw set_access_port <switch_name> <nio_name> <vlan_id>" :
634 Set the specified port as an ACCESS port in VLAN <vlan_id>.
635
636* "ethsw set_dot1q_port <switch_name> <nio_name> <native_vlan>" :
637 Set the specified port as a 802.1Q trunk port, with native
638 VLAN <native_vlan>.
639
640* "ethsw set_qinq_port <switch_name> <nio_name> <outer_vlan>" :
641 Set the specified port as a trunk (QinQ) port.
642 (since version 0.2.3-RC3-community)
643
644* "ethsw clear_mac_addr_table <switch_name>" : Clear the MAC address table.
645
646* "ethsw show_mac_addr_table <switch_name>" : Show the MAC address table
647 (output format: Ethernet address, VLAN, NIO)
648
649
650Virtual ATM switch module ("atmsw")
651=============================
652
653* "atmsw list" : List all ATM switches.
654
655* "atmsw create <switch_name>" : Create a new ATM switch.
656
657* "atmsw rename <switch_name> <new_name>" : Rename an ATM switch.
658 (since version 0.2.11)
659
660* "atmsw delete <switch_name>" : Delete the specified ATM switch.
661
662* "atmsw create_vpc <switch_name> <input_nio> <input_vpi>
663 <output_nio> <output_vpi>" :
664 Create a new Virtual Path connection (unidirectional).
665
666* "atmsw delete_vpc <switch_name> <input_nio> <input_vpi>
667 <output_nio> <output_vpi>" :
668 Delete a Virtual Path connection (unidirectional).
669
670* "atmsw create_vcc <switch_name> <input_nio> <input_vpi> <input_vci>
671 <output_nio> <output_vpi> <output_vci>" :
672 Create a new Virtual Channel connection (unidirectional).
673
674* "atmsw delete_vcc <switch_name> <input_nio> <input_vpi> <input_vci>
675 <output_nio> <output_vpi> <output_vci>" :
676 Delete a Virtual Channel connection (unidirectional).
677
678
679Virtual ATM bridge module ("atm_bridge")
680==================================
681
682Available since version 0.2.8-RC2.
683
684* "atm_bridge list" : List all ATM bridges.
685
686* "atm_bridge create <bridge_name>" : Create a new ATM bridge.
687
688* "atm_bridge rename <bridge_name> <new_name>" : Rename an ATM bridge.
689 (since version 0.2.11)
690
691* "atm_bridge delete <bridge_name>" : Delete an ATM bridge.
692
693* "atm_bridge configure <bridge_name> <eth_nio> <atm_nio> <vpi> <vci>" :
694 Configure an ATM bridge.
695
696* "atm_bridge unconfigure <bridge_name>" : Unconfigure an ATM bridge.
697
698
699Virtual Frame-Relay switch module ("frsw")
700====================================
701
702* "frsw list" : List all Frame-Relay switches.
703
704* "frsw create <switch_name>" : Create a new Frame-Relay switch.
705
706* "frsw rename <switch_name> <new_name>" : Rename a Frame-Relay switch.
707 (since version 0.2.11)
708
709* "frsw delete <switch_name>" : Delete the specified Frame-Relay switch.
710
711* "frsw create_vc <switch_name> <input_nio> <input_dlci>
712 <output_nio> <output_dlci>" :
713 Create a new Virtual Circuit connection (unidirectional).
714
715* "frsw delete_vc <switch_name> <input_nio> <input_dlci>
716 <output_nio> <output_dlci>" :
717 Delete a Virtual Circuit connection (unidirectional).
718
719
720Object store module ("object_store")
721====================================
722
723Available since version 0.2.8-RC2.
724
725* "object_store write <object_name> <data>" :
726 Write an object, data provided in base64 encoding.
727
728* "object_store read <object_name>" :
729 Read an object and return data in base64 encoding.
730
731* "object_store rename <object_name> <new_name>" : Rename an object.
732 (since version 0.2.11)
733
734* "object_store delete <object_name>" :
735 Delete an object from the store.
736
737* "object_store delete_all" :
738 Delete all objects from the store
739
740* "object_store list" :
741 Object list.
742
README.md
1# Dynamips (Cisco Router Emulator)
2
3[![Build Status](https://travis-ci.org/GNS3/dynamips.svg?branch=master)](https://travis-ci.org/GNS3/dynamips)
4
5## Overview
6
7Authors of this document: Fabien Devaux, Christophe Fillot, MtvE,
8Gordon Russell, Jeremy Grossmann and Flávio J. Saraiva.
9
10Converted to markdown format by Daniel Lintott.
11
12This is a continuation of Dynamips, based on the last development version and
13improved with patches wrote by various people from the community. This fork was
14named Dynamips-community up to the 0.2.8-community release and renamed to the
15original Dynamips on the 0.2.9 release.
16
17You can compile two different versions of Dynamips with this code.
18Edit the Makefile to set the flags to suit your environment.
19One of the flags, DYNAMIPS_CODE, can be "stable" or "unstable".
20
21Unstable is the code which contains most of the development code, and is
22in particular suitable for use on a 64 bit Mac. Unfortunately this has
23proved to be unstable on other platforms.
24
25Stable contains the same code as Unstable, minus some mips64 bit optimisations
26and tcb code which seems to trigger instability on a number of platforms.
27You should probably use stable unless you have a very good reason.
28
29For more information on the how to use Dynamips see the README file
30
31License: GNU GPLv2
32
33### How to compile Dynamips
34
35Dynamips now uses the CMake build system. To compile Dynamips you will need
36CMake and a working GCC or Clang compiler, as well as the build dependencies.
37
38#### Build Dependencies
39
40On Debian based systems the following build dependencies are required and can be
41installed using apt-get:
42- libelf-dev
43- libpcap0.8-dev
44
45On Redhat based systems (CentOS, Fedora etc) the following build dependencies are
46required and can be installed using yum:
47- elfutils-libelf-devel
48- libpcap-devel
49
50Similar packages should be available for most distributions, consult your
51distributions package list to find them.
52
53MacPort & Homebrew:
54- libelf
55- cmake
56
57Windows with Cygwin:
58
59- Install Winpcap: https://www.winpcap.org/
60- Install Cygwin 32-bit (setup-x86.exe): https://cygwin.com/install.html
61- In Cygwin setup, install the ``make``, ``cmake``, ``gcc-core`` and ``git`` packages
62- Additionally, install the ``libelf0`` package (**important:** both bin and src)
63- Download and unzip Winpcap developer pack: http://www.winpcap.org/devel.htm
64- Copy the libraries ``WpdPack\Lib\libpacket.a`` and ``WpdPack\Lib\libwpcap.a`` to ``cygwin\lib\``
65- Copy all headers from ``WpdPack\Include`` to ``cygwin\usr\include\``
66
67#### Compiling (Linux/Mac)
68
69Either download and extract a source tarball from the releases page or clone the
70Git repository using:
71
72```
73git clone git://github.com/GNS3/dynamips.git
74cd dynamips
75mkdir build
76cd build
77cmake ..
78```
79
80On OSX Yosemite you need to force usage of GCC 4.9:
81```
82cmake .. -DCMAKE_C_COMPILER=/usr/local/bin/gcc-4.9
83```
84
85And for building stable release:
86```
87cmake .. -DDYNAMIPS_CODE=stable -DCMAKE_C_COMPILER=/usr/local/bin/gcc-4.9
88```
89
90This will generate the Makefiles required for compiling Dynamips. To just build
91Dynamips simple run:
92
93```
94make
95```
96or to build and install Dynamips run:
97
98```
99make install
100```
101
102The specify a differant installation location run:
103
104```
105cmake -DCMAKE_INSTALL_PREFIX=/target/path ..
106```
107
108#### Compiling (Windows)
109
110Open the Cygwin terminal.
111
112First, the libelf has to be manually compiled and installed:
113
114``<MIRROR_DOWNLOADS>`` is the directory used by your Cygwin mirror to download packages.
115It is possible that the libelf version differs from below.
116
117```
118cp <MIRROR_DOWNLOADS>/x86/release/libelf/libelf0/libelf0-0.8.13-2-src.tar.bz2 .
119mkdir libelf && tar xvjf libelf0-0.8.13-2-src.tar.bz2 -C libelf
120cd libelf
121tar xvzf libelf-0.8.13.tar.gz
122cd libelf-0.8.13
123./configure
124make
125make install
126```
127
128Then, Dynamips can be build:
129
130```
131git clone git://github.com/GNS3/dynamips.git
132cd dynamips
133mkdir build
134cd build
135cmake ..
136make
137```
138
139You will find ``dynamips.exe`` in the stable directory.
140Put ``cygwin1.dll`` from the Cygwin bin directory in the same directory as ``dynamips.exe`` to be able to start it from outside Cygwin terminal.
141
142### Releasing
143
144* Update ChangeLog
145* In common/dynamips.c update sw_version_tag with date
146* Update RELEASE-NOTE
147* Update CMakeLists.txt
148* git tag the release
149
150### Useful Information
151Website: http://www.gns3.net/dynamips/
152
153Forum: http://forum.gns3.net/
154
155Repository: https://github.com/GNS3/dynamips
156
157Bugtracker: https://github.com/GNS3/dynamips/issues
158
159### Original websites
160http://www.ipflow.utc.fr/index.php/Cisco_7200_Simulator
161http://www.ipflow.utc.fr/blog/
162