/[dynamips]/trunk/dev_c3745_pcmod.c
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /trunk/dev_c3745_pcmod.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 12 - (show annotations)
Sat Oct 6 16:45:40 2007 UTC (16 years, 5 months ago) by dpavlin
File MIME type: text/plain
File size: 2652 byte(s)
make working copy

1 /*
2 * Cisco router simulation platform.
3 * Copyright (c) 2007 Christophe Fillot (cf@utc.fr)
4 *
5 * PC Modules NM (NM-NAM, NM-CIDS, ...) for c3745 platforms.
6 */
7
8 #include <stdio.h>
9 #include <stdlib.h>
10 #include <string.h>
11 #include <stdarg.h>
12 #include <unistd.h>
13 #include <time.h>
14 #include <errno.h>
15 #include <assert.h>
16
17 #include "utils.h"
18 #include "net.h"
19 #include "net_io.h"
20 #include "ptask.h"
21 #include "vm.h"
22 #include "dev_i8255x.h"
23 #include "dev_c3745.h"
24
25 /* Initialize a NM PC module in the specified slot */
26 static int dev_c3745_pcmod_init(vm_instance_t *vm,struct cisco_card *card)
27 {
28
29 struct i8255x_data *data;
30 u_int slot = card->slot_id;
31
32 /* Set the PCI bus */
33 card->pci_bus = vm->slots_pci_bus[slot];
34
35 /* Set the EEPROM */
36 cisco_card_set_eeprom(vm,card,cisco_eeprom_find_nm(card->driver->dev_type));
37 c3745_set_slot_eeprom(VM_C3745(vm),slot,&card->eeprom);
38
39 /* Create the Intel i8255x chip */
40 data = dev_i8255x_init(vm,card->dev_name,0,
41 card->pci_bus,0,
42 c3745_net_irq_for_slot_port(slot,0));
43
44 /* Store device info into the router structure */
45 card->drv_info = data;
46 return(0);
47 }
48
49 /* Remove a NM PC module from the specified slot */
50 static int dev_c3745_pcmod_shutdown(vm_instance_t *vm,struct cisco_card *card)
51 {
52 struct i8255x_data *data = card->drv_info;
53
54 /* Remove the NM EEPROM */
55 cisco_card_unset_eeprom(card);
56 c3745_set_slot_eeprom(VM_C3745(vm),card->slot_id,NULL);
57
58 /* Remove the Intel i2855x chip */
59 dev_i8255x_remove(data);
60 return(0);
61 }
62
63 /* Bind a Network IO descriptor */
64 static int dev_c3745_pcmod_set_nio(vm_instance_t *vm,struct cisco_card *card,
65 u_int port_id,netio_desc_t *nio)
66 {
67 struct i8255x_data *d = card->drv_info;
68
69 if (!d || (port_id != 0))
70 return(-1);
71
72 dev_i8255x_set_nio(d,nio);
73 return(0);
74 }
75
76 /* Unbind a Network IO descriptor */
77 static int dev_c3745_pcmod_unset_nio(vm_instance_t *vm,struct cisco_card *card,
78 u_int port_id)
79 {
80 struct i8255x_data *d = card->drv_info;
81
82 if (!d || (port_id != 0))
83 return(-1);
84
85 dev_i8255x_unset_nio(d);
86 return(0);
87 }
88
89 /* NM-NAM driver */
90 struct cisco_card_driver dev_c3745_nm_nam_driver = {
91 "NM-NAM", 0, 0,
92 dev_c3745_pcmod_init,
93 dev_c3745_pcmod_shutdown,
94 NULL,
95 dev_c3745_pcmod_set_nio,
96 dev_c3745_pcmod_unset_nio,
97 NULL,
98 };
99
100 /* NM-CIDS driver */
101 struct cisco_card_driver dev_c3745_nm_cids_driver = {
102 "NM-CIDS", 0, 0,
103 dev_c3745_pcmod_init,
104 dev_c3745_pcmod_shutdown,
105 NULL,
106 dev_c3745_pcmod_set_nio,
107 dev_c3745_pcmod_unset_nio,
108 NULL,
109 };

  ViewVC Help
Powered by ViewVC 1.1.26