source: libmono-lliurex-utils/trunk/libmono-lliurex-utils/InterfacesConfig.cs @ 341

Last change on this file since 341 was 341, checked in by mabarracus, 5 years ago

ported pandora code

File size: 2.9 KB
Line 
1
2using System;
3using Antlr.Runtime;
4
5namespace lliurex
6{
7        namespace net
8        {
9       
10       
11                public class InterfacesConfig
12                {
13                        private static InterfacesConfig instance = null;
14                        public NetworkInterface ifacestack;
15                       
16                        public System.Collections.Generic.List<NetworkInterface> interfaces;
17                        public System.Collections.Generic.List<string> auto;
18                       
19                       
20                       
21                        public static InterfacesConfig GetInstance()
22                        {
23                                if(instance==null)instance=new InterfacesConfig();
24                               
25                                return instance;
26                        }
27                       
28                        private InterfacesConfig()
29                        {
30                                interfaces = new System.Collections.Generic.List<lliurex.net.NetworkInterface>();
31                                auto = new System.Collections.Generic.List<string>();
32                        }
33                       
34                       
35                        public void Load()
36                        {
37                                System.IO.StreamReader sr = new System.IO.StreamReader("/etc/network/interfaces");
38                                while(!sr.EndOfStream)
39                                {
40                                        String line = sr.ReadLine();
41                                        //Console.WriteLine("Line: " + line);
42                                       
43                                        interfacesLexer lex = new interfacesLexer(new ANTLRStringStream(line));
44                                        CommonTokenStream tokens = new CommonTokenStream(lex);
45                                        interfacesParser prs = new interfacesParser(tokens);
46                                               
47                                        prs.eval();             
48                                       
49                                       
50                                }
51                                sr.Close();
52                                       
53                        }
54                       
55                       
56                        public void Save(String path)
57                        {
58                                System.IO.StreamWriter wr = new System.IO.StreamWriter(path);
59                               
60                                //auto ifaces
61                                if(auto.Count>0)
62                                {
63                                        wr.Write("auto");
64                                        foreach(string s in auto)
65                                        {
66                                                wr.Write(" "+s);                       
67                                        }
68                                        wr.WriteLine("");
69                                }
70                               
71                                if(interfaces.Count>0)
72                                {
73                                        foreach(NetworkInterface if0 in interfaces)
74                                        {
75                                                wr.WriteLine("");
76                                                wr.WriteLine("iface "+if0.name+" "+if0.iface_type+" "+if0.iface_conf); 
77                                                if(if0.address!="")wr.WriteLine("address "+if0.address);
78                                                if(if0.netmask!="")wr.WriteLine("netmask "+if0.netmask);
79                                                if(if0.gateway!="")wr.WriteLine("gateway "+if0.gateway);
80                                               
81                                                //unknown options
82                                                if(if0.options.Count>0)
83                                                {
84                                                        foreach(string s in if0.options)
85                                                        {
86                                                                wr.WriteLine(s);       
87                                                        }
88                                                }
89                                        }
90                                }
91                               
92                                wr.Close();
93                               
94                        }
95                       
96                        public void AddInterface(string name,string type,string conf)
97                        {
98                                NetworkInterface if0 = new NetworkInterface(); 
99                                if0.name=name;
100                                if0.iface_type=type;
101                                if0.iface_conf=conf;
102                                interfaces.Add(if0);
103                                ifacestack = if0;
104                               
105                        }
106                       
107                        public void AddAuto(string iface)
108                        {
109                                auto.Add(iface);       
110                        }
111                       
112                       
113                        public void SetAddress(string address)
114                        {
115                                if(ifacestack!=null)
116                                        ifacestack.address = address;   
117                        }
118                       
119                        public void SetNetmask(string netmask)
120                        {
121                                if(ifacestack!=null)
122                                        ifacestack.netmask = netmask;
123                        }
124                       
125                        public void SetGateway(string gateway)
126                        {
127                                if(ifacestack!=null)
128                                        ifacestack.gateway=gateway;
129                        }
130                       
131                        public void SetOption(string option)
132                        {
133                                if(ifacestack!=null)
134                                {
135                                        ifacestack.options.Add(option);
136                                        Console.WriteLine("Inserted option "+option);
137                                }
138                               
139                        }
140                                               
141                       
142                }
143        }
144}
Note: See TracBrowser for help on using the repository browser.