diff options
Diffstat (limited to 'vendor/github.com/fsouza/go-dockerclient/external/golang.org/x/sys/unix/mksysctl_openbsd.pl')
-rwxr-xr-x | vendor/github.com/fsouza/go-dockerclient/external/golang.org/x/sys/unix/mksysctl_openbsd.pl | 264 |
1 files changed, 264 insertions, 0 deletions
diff --git a/vendor/github.com/fsouza/go-dockerclient/external/golang.org/x/sys/unix/mksysctl_openbsd.pl b/vendor/github.com/fsouza/go-dockerclient/external/golang.org/x/sys/unix/mksysctl_openbsd.pl new file mode 100755 index 0000000..be67afa --- /dev/null +++ b/vendor/github.com/fsouza/go-dockerclient/external/golang.org/x/sys/unix/mksysctl_openbsd.pl | |||
@@ -0,0 +1,264 @@ | |||
1 | #!/usr/bin/env perl | ||
2 | |||
3 | # Copyright 2011 The Go Authors. All rights reserved. | ||
4 | # Use of this source code is governed by a BSD-style | ||
5 | # license that can be found in the LICENSE file. | ||
6 | |||
7 | # | ||
8 | # Parse the header files for OpenBSD and generate a Go usable sysctl MIB. | ||
9 | # | ||
10 | # Build a MIB with each entry being an array containing the level, type and | ||
11 | # a hash that will contain additional entries if the current entry is a node. | ||
12 | # We then walk this MIB and create a flattened sysctl name to OID hash. | ||
13 | # | ||
14 | |||
15 | use strict; | ||
16 | |||
17 | if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") { | ||
18 | print STDERR "GOARCH or GOOS not defined in environment\n"; | ||
19 | exit 1; | ||
20 | } | ||
21 | |||
22 | my $debug = 0; | ||
23 | my %ctls = (); | ||
24 | |||
25 | my @headers = qw ( | ||
26 | sys/sysctl.h | ||
27 | sys/socket.h | ||
28 | sys/tty.h | ||
29 | sys/malloc.h | ||
30 | sys/mount.h | ||
31 | sys/namei.h | ||
32 | sys/sem.h | ||
33 | sys/shm.h | ||
34 | sys/vmmeter.h | ||
35 | uvm/uvm_param.h | ||
36 | uvm/uvm_swap_encrypt.h | ||
37 | ddb/db_var.h | ||
38 | net/if.h | ||
39 | net/if_pfsync.h | ||
40 | net/pipex.h | ||
41 | netinet/in.h | ||
42 | netinet/icmp_var.h | ||
43 | netinet/igmp_var.h | ||
44 | netinet/ip_ah.h | ||
45 | netinet/ip_carp.h | ||
46 | netinet/ip_divert.h | ||
47 | netinet/ip_esp.h | ||
48 | netinet/ip_ether.h | ||
49 | netinet/ip_gre.h | ||
50 | netinet/ip_ipcomp.h | ||
51 | netinet/ip_ipip.h | ||
52 | netinet/pim_var.h | ||
53 | netinet/tcp_var.h | ||
54 | netinet/udp_var.h | ||
55 | netinet6/in6.h | ||
56 | netinet6/ip6_divert.h | ||
57 | netinet6/pim6_var.h | ||
58 | netinet/icmp6.h | ||
59 | netmpls/mpls.h | ||
60 | ); | ||
61 | |||
62 | my @ctls = qw ( | ||
63 | kern | ||
64 | vm | ||
65 | fs | ||
66 | net | ||
67 | #debug # Special handling required | ||
68 | hw | ||
69 | #machdep # Arch specific | ||
70 | user | ||
71 | ddb | ||
72 | #vfs # Special handling required | ||
73 | fs.posix | ||
74 | kern.forkstat | ||
75 | kern.intrcnt | ||
76 | kern.malloc | ||
77 | kern.nchstats | ||
78 | kern.seminfo | ||
79 | kern.shminfo | ||
80 | kern.timecounter | ||
81 | kern.tty | ||
82 | kern.watchdog | ||
83 | net.bpf | ||
84 | net.ifq | ||
85 | net.inet | ||
86 | net.inet.ah | ||
87 | net.inet.carp | ||
88 | net.inet.divert | ||
89 | net.inet.esp | ||
90 | net.inet.etherip | ||
91 | net.inet.gre | ||
92 | net.inet.icmp | ||
93 | net.inet.igmp | ||
94 | net.inet.ip | ||
95 | net.inet.ip.ifq | ||
96 | net.inet.ipcomp | ||
97 | net.inet.ipip | ||
98 | net.inet.mobileip | ||
99 | net.inet.pfsync | ||
100 | net.inet.pim | ||
101 | net.inet.tcp | ||
102 | net.inet.udp | ||
103 | net.inet6 | ||
104 | net.inet6.divert | ||
105 | net.inet6.ip6 | ||
106 | net.inet6.icmp6 | ||
107 | net.inet6.pim6 | ||
108 | net.inet6.tcp6 | ||
109 | net.inet6.udp6 | ||
110 | net.mpls | ||
111 | net.mpls.ifq | ||
112 | net.key | ||
113 | net.pflow | ||
114 | net.pfsync | ||
115 | net.pipex | ||
116 | net.rt | ||
117 | vm.swapencrypt | ||
118 | #vfsgenctl # Special handling required | ||
119 | ); | ||
120 | |||
121 | # Node name "fixups" | ||
122 | my %ctl_map = ( | ||
123 | "ipproto" => "net.inet", | ||
124 | "net.inet.ipproto" => "net.inet", | ||
125 | "net.inet6.ipv6proto" => "net.inet6", | ||
126 | "net.inet6.ipv6" => "net.inet6.ip6", | ||
127 | "net.inet.icmpv6" => "net.inet6.icmp6", | ||
128 | "net.inet6.divert6" => "net.inet6.divert", | ||
129 | "net.inet6.tcp6" => "net.inet.tcp", | ||
130 | "net.inet6.udp6" => "net.inet.udp", | ||
131 | "mpls" => "net.mpls", | ||
132 | "swpenc" => "vm.swapencrypt" | ||
133 | ); | ||
134 | |||
135 | # Node mappings | ||
136 | my %node_map = ( | ||
137 | "net.inet.ip.ifq" => "net.ifq", | ||
138 | "net.inet.pfsync" => "net.pfsync", | ||
139 | "net.mpls.ifq" => "net.ifq" | ||
140 | ); | ||
141 | |||
142 | my $ctlname; | ||
143 | my %mib = (); | ||
144 | my %sysctl = (); | ||
145 | my $node; | ||
146 | |||
147 | sub debug() { | ||
148 | print STDERR "$_[0]\n" if $debug; | ||
149 | } | ||
150 | |||
151 | # Walk the MIB and build a sysctl name to OID mapping. | ||
152 | sub build_sysctl() { | ||
153 | my ($node, $name, $oid) = @_; | ||
154 | my %node = %{$node}; | ||
155 | my @oid = @{$oid}; | ||
156 | |||
157 | foreach my $key (sort keys %node) { | ||
158 | my @node = @{$node{$key}}; | ||
159 | my $nodename = $name.($name ne '' ? '.' : '').$key; | ||
160 | my @nodeoid = (@oid, $node[0]); | ||
161 | if ($node[1] eq 'CTLTYPE_NODE') { | ||
162 | if (exists $node_map{$nodename}) { | ||
163 | $node = \%mib; | ||
164 | $ctlname = $node_map{$nodename}; | ||
165 | foreach my $part (split /\./, $ctlname) { | ||
166 | $node = \%{@{$$node{$part}}[2]}; | ||
167 | } | ||
168 | } else { | ||
169 | $node = $node[2]; | ||
170 | } | ||
171 | &build_sysctl($node, $nodename, \@nodeoid); | ||
172 | } elsif ($node[1] ne '') { | ||
173 | $sysctl{$nodename} = \@nodeoid; | ||
174 | } | ||
175 | } | ||
176 | } | ||
177 | |||
178 | foreach my $ctl (@ctls) { | ||
179 | $ctls{$ctl} = $ctl; | ||
180 | } | ||
181 | |||
182 | # Build MIB | ||
183 | foreach my $header (@headers) { | ||
184 | &debug("Processing $header..."); | ||
185 | open HEADER, "/usr/include/$header" || | ||
186 | print STDERR "Failed to open $header\n"; | ||
187 | while (<HEADER>) { | ||
188 | if ($_ =~ /^#define\s+(CTL_NAMES)\s+{/ || | ||
189 | $_ =~ /^#define\s+(CTL_(.*)_NAMES)\s+{/ || | ||
190 | $_ =~ /^#define\s+((.*)CTL_NAMES)\s+{/) { | ||
191 | if ($1 eq 'CTL_NAMES') { | ||
192 | # Top level. | ||
193 | $node = \%mib; | ||
194 | } else { | ||
195 | # Node. | ||
196 | my $nodename = lc($2); | ||
197 | if ($header =~ /^netinet\//) { | ||
198 | $ctlname = "net.inet.$nodename"; | ||
199 | } elsif ($header =~ /^netinet6\//) { | ||
200 | $ctlname = "net.inet6.$nodename"; | ||
201 | } elsif ($header =~ /^net\//) { | ||
202 | $ctlname = "net.$nodename"; | ||
203 | } else { | ||
204 | $ctlname = "$nodename"; | ||
205 | $ctlname =~ s/^(fs|net|kern)_/$1\./; | ||
206 | } | ||
207 | if (exists $ctl_map{$ctlname}) { | ||
208 | $ctlname = $ctl_map{$ctlname}; | ||
209 | } | ||
210 | if (not exists $ctls{$ctlname}) { | ||
211 | &debug("Ignoring $ctlname..."); | ||
212 | next; | ||
213 | } | ||
214 | |||
215 | # Walk down from the top of the MIB. | ||
216 | $node = \%mib; | ||
217 | foreach my $part (split /\./, $ctlname) { | ||
218 | if (not exists $$node{$part}) { | ||
219 | &debug("Missing node $part"); | ||
220 | $$node{$part} = [ 0, '', {} ]; | ||
221 | } | ||
222 | $node = \%{@{$$node{$part}}[2]}; | ||
223 | } | ||
224 | } | ||
225 | |||
226 | # Populate current node with entries. | ||
227 | my $i = -1; | ||
228 | while (defined($_) && $_ !~ /^}/) { | ||
229 | $_ = <HEADER>; | ||
230 | $i++ if $_ =~ /{.*}/; | ||
231 | next if $_ !~ /{\s+"(\w+)",\s+(CTLTYPE_[A-Z]+)\s+}/; | ||
232 | $$node{$1} = [ $i, $2, {} ]; | ||
233 | } | ||
234 | } | ||
235 | } | ||
236 | close HEADER; | ||
237 | } | ||
238 | |||
239 | &build_sysctl(\%mib, "", []); | ||
240 | |||
241 | print <<EOF; | ||
242 | // mksysctl_openbsd.pl | ||
243 | // MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT | ||
244 | |||
245 | // +build $ENV{'GOARCH'},$ENV{'GOOS'} | ||
246 | |||
247 | package unix; | ||
248 | |||
249 | type mibentry struct { | ||
250 | ctlname string | ||
251 | ctloid []_C_int | ||
252 | } | ||
253 | |||
254 | var sysctlMib = []mibentry { | ||
255 | EOF | ||
256 | |||
257 | foreach my $name (sort keys %sysctl) { | ||
258 | my @oid = @{$sysctl{$name}}; | ||
259 | print "\t{ \"$name\", []_C_int{ ", join(', ', @oid), " } }, \n"; | ||
260 | } | ||
261 | |||
262 | print <<EOF; | ||
263 | } | ||
264 | EOF | ||