├── .classpath
├── .github
└── workflows
│ └── ci.yml
├── .gitignore
├── .project
├── .settings
├── org.eclipse.jdt.core.prefs
├── org.eclipse.jdt.ui.prefs
└── org.maven.ide.eclipse.prefs
├── .travis.yml
├── LICENSE
├── README
├── lib
├── CopyLibs
│ └── org-netbeans-modules-java-j2seproject-copylibstask.jar
├── junit
│ ├── junit-3.8.2-api.zip
│ └── junit-3.8.2.jar
├── junit_4
│ ├── junit-4.5-api.zip
│ ├── junit-4.5-src.jar
│ └── junit-4.5.jar
└── nblibraries.properties
├── pom.xml
└── src
├── main
└── java
│ └── jnr
│ └── netdb
│ ├── FileProtocolsDB.java
│ ├── FileServicesDB.java
│ ├── IANAProtocolsDB.java
│ ├── IANAServicesDB.java
│ ├── NativeProtocolsDB.java
│ ├── NativeServicesDB.java
│ ├── NetDBEntry.java
│ ├── NetDBFilter.java
│ ├── NetDBIterator.java
│ ├── NetDBParser.java
│ ├── Protocol.java
│ ├── ProtocolsDB.java
│ ├── Service.java
│ ├── ServicesDB.java
│ └── StringUtil.java
└── test
└── java
└── jnr
└── netdb
├── FileProtocolDBTest.java
├── FileServicesDBTest.java
├── NativeProtocolsDBTest.java
├── NativeServicesDBTest.java
├── ProtocolTest.java
└── ServiceTest.java
/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.github/workflows/ci.yml:
--------------------------------------------------------------------------------
1 | # This workflow will build a Java project with Maven
2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
3 |
4 | name: Java CI with Maven
5 |
6 | on:
7 | push:
8 | branches: [ master ]
9 | pull_request:
10 | branches: [ master ]
11 |
12 | jobs:
13 | jdk8:
14 |
15 | runs-on: ubuntu-latest
16 |
17 | steps:
18 | - uses: actions/checkout@v2
19 | - name: Set up JDK 8
20 | uses: actions/setup-java@v1.4.3
21 | with:
22 | java-version: 8
23 | - name: Build with Maven
24 | run: mvn -B package --file pom.xml
25 |
26 | jdk11:
27 |
28 | runs-on: ubuntu-latest
29 |
30 | steps:
31 | - uses: actions/checkout@v2
32 | - name: Set up JDK 11
33 | uses: actions/setup-java@v1.4.3
34 | with:
35 | java-version: 11
36 | - name: Build with Maven
37 | run: mvn -B package --file pom.xml
38 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.orig$
2 | *.rej$
3 | *.class$
4 | *~
5 | .idea
6 | *.iml
7 | nbproject/private
8 | build
9 | dist
10 | target
11 | lib/nblibraries-private.properties
12 | /.settings/
13 |
14 |
--------------------------------------------------------------------------------
/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | jnr-netdb
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 | org.maven.ide.eclipse.maven2Builder
15 |
16 |
17 |
18 |
19 |
20 | org.maven.ide.eclipse.maven2Nature
21 | org.eclipse.jdt.core.javanature
22 |
23 |
24 |
--------------------------------------------------------------------------------
/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | #Thu Mar 25 07:53:14 CET 2010
2 | eclipse.preferences.version=1
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
4 | org.eclipse.jdt.core.compiler.compliance=1.5
5 | org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
6 | org.eclipse.jdt.core.compiler.source=1.5
7 |
--------------------------------------------------------------------------------
/.settings/org.eclipse.jdt.ui.prefs:
--------------------------------------------------------------------------------
1 | #Thu Mar 25 08:36:35 CET 2010
2 | eclipse.preferences.version=1
3 | editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
4 | sp_cleanup.add_default_serial_version_id=true
5 | sp_cleanup.add_generated_serial_version_id=false
6 | sp_cleanup.add_missing_annotations=true
7 | sp_cleanup.add_missing_deprecated_annotations=true
8 | sp_cleanup.add_missing_methods=false
9 | sp_cleanup.add_missing_nls_tags=false
10 | sp_cleanup.add_missing_override_annotations=true
11 | sp_cleanup.add_serial_version_id=false
12 | sp_cleanup.always_use_blocks=true
13 | sp_cleanup.always_use_parentheses_in_expressions=false
14 | sp_cleanup.always_use_this_for_non_static_field_access=false
15 | sp_cleanup.always_use_this_for_non_static_method_access=false
16 | sp_cleanup.convert_to_enhanced_for_loop=false
17 | sp_cleanup.correct_indentation=false
18 | sp_cleanup.format_source_code=false
19 | sp_cleanup.format_source_code_changes_only=true
20 | sp_cleanup.make_local_variable_final=false
21 | sp_cleanup.make_parameters_final=false
22 | sp_cleanup.make_private_fields_final=true
23 | sp_cleanup.make_type_abstract_if_missing_method=false
24 | sp_cleanup.make_variable_declarations_final=false
25 | sp_cleanup.never_use_blocks=false
26 | sp_cleanup.never_use_parentheses_in_expressions=true
27 | sp_cleanup.on_save_use_additional_actions=true
28 | sp_cleanup.organize_imports=false
29 | sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
30 | sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
31 | sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
32 | sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
33 | sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
34 | sp_cleanup.remove_private_constructors=true
35 | sp_cleanup.remove_trailing_whitespaces=false
36 | sp_cleanup.remove_trailing_whitespaces_all=false
37 | sp_cleanup.remove_trailing_whitespaces_ignore_empty=true
38 | sp_cleanup.remove_unnecessary_casts=true
39 | sp_cleanup.remove_unnecessary_nls_tags=true
40 | sp_cleanup.remove_unused_imports=true
41 | sp_cleanup.remove_unused_local_variables=false
42 | sp_cleanup.remove_unused_private_fields=true
43 | sp_cleanup.remove_unused_private_members=false
44 | sp_cleanup.remove_unused_private_methods=true
45 | sp_cleanup.remove_unused_private_types=true
46 | sp_cleanup.sort_members=false
47 | sp_cleanup.sort_members_all=false
48 | sp_cleanup.use_blocks=false
49 | sp_cleanup.use_blocks_only_for_return_and_throw=false
50 | sp_cleanup.use_parentheses_in_expressions=false
51 | sp_cleanup.use_this_for_non_static_field_access=false
52 | sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
53 | sp_cleanup.use_this_for_non_static_method_access=false
54 | sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
55 |
--------------------------------------------------------------------------------
/.settings/org.maven.ide.eclipse.prefs:
--------------------------------------------------------------------------------
1 | #Thu Mar 25 07:53:07 CET 2010
2 | activeProfiles=
3 | eclipse.preferences.version=1
4 | fullBuildGoals=process-test-resources
5 | includeModules=false
6 | resolveWorkspaceProjects=true
7 | resourceFilterGoals=process-resources resources\:testResources
8 | skipCompilerPlugin=true
9 | version=1
10 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: java
2 | jdk:
3 | - oraclejdk7
4 | - openjdk6
5 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 |
2 | Licensed under the Apache License, Version 2.0 (the "License");
3 | you may not use this file except in compliance with the License.
4 | You may obtain a copy of the License at
5 |
6 | http://www.apache.org/licenses/LICENSE-2.0
7 |
8 | Unless required by applicable law or agreed to in writing, software
9 | distributed under the License is distributed on an "AS IS" BASIS,
10 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 | See the License for the specific language governing permissions and
12 | limitations under the License.
--------------------------------------------------------------------------------
/README:
--------------------------------------------------------------------------------
1 |
2 | jnr-netdb is a java interface to getservbyname(3), getservbyport(3).
3 |
4 | It tries to use the native functions if possible, falling back to parsing
5 | /etc/services directly, and finally to an inbuilt table for use in environments
6 | where neither native code, nor filesystem access is possible.
7 |
8 |
--------------------------------------------------------------------------------
/lib/CopyLibs/org-netbeans-modules-java-j2seproject-copylibstask.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jnr/jnr-netdb/32d2676c846cb32ec4beffa85a540a616f08f18a/lib/CopyLibs/org-netbeans-modules-java-j2seproject-copylibstask.jar
--------------------------------------------------------------------------------
/lib/junit/junit-3.8.2-api.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jnr/jnr-netdb/32d2676c846cb32ec4beffa85a540a616f08f18a/lib/junit/junit-3.8.2-api.zip
--------------------------------------------------------------------------------
/lib/junit/junit-3.8.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jnr/jnr-netdb/32d2676c846cb32ec4beffa85a540a616f08f18a/lib/junit/junit-3.8.2.jar
--------------------------------------------------------------------------------
/lib/junit_4/junit-4.5-api.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jnr/jnr-netdb/32d2676c846cb32ec4beffa85a540a616f08f18a/lib/junit_4/junit-4.5-api.zip
--------------------------------------------------------------------------------
/lib/junit_4/junit-4.5-src.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jnr/jnr-netdb/32d2676c846cb32ec4beffa85a540a616f08f18a/lib/junit_4/junit-4.5-src.jar
--------------------------------------------------------------------------------
/lib/junit_4/junit-4.5.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jnr/jnr-netdb/32d2676c846cb32ec4beffa85a540a616f08f18a/lib/junit_4/junit-4.5.jar
--------------------------------------------------------------------------------
/lib/nblibraries.properties:
--------------------------------------------------------------------------------
1 | libs.CopyLibs.classpath=\
2 | ${base}/CopyLibs/org-netbeans-modules-java-j2seproject-copylibstask.jar
3 | libs.junit.classpath=\
4 | ${base}/junit/junit-3.8.2.jar
5 | libs.junit.javadoc=\
6 | ${base}/junit/junit-3.8.2-api.zip
7 | libs.junit_4.classpath=\
8 | ${base}/junit_4/junit-4.5.jar
9 | libs.junit_4.javadoc=\
10 | ${base}/junit_4/junit-4.5-api.zip
11 | libs.junit_4.src=\
12 | ${base}/junit_4/junit-4.5-src.jar
13 |
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
2 | 4.0.0
3 |
4 | org.sonatype.oss
5 | oss-parent
6 | 7
7 |
8 |
9 | com.github.jnr
10 | jnr-netdb
11 | jar
12 | 1.2.1-SNAPSHOT
13 | jnr-netdb
14 | Lookup TCP and UDP services from java
15 | http://github.com/jnr/jnr-netdb
16 |
17 |
18 |
19 | The Apache Software License, Version 2.0
20 | http://www.apache.org/licenses/LICENSE-2.0.txt
21 | repo
22 |
23 |
24 |
25 |
26 | scm:git:git@github.com:jnr/jnr-netdb.git
27 | scm:git:git@github.com:jnr/jnr-netdb.git
28 | git@github.com:jnr/jnr-netdb.git
29 |
30 |
31 |
32 |
33 | wmeissner
34 | Wayne Meissner
35 | wmeissner@gmail.com
36 |
37 |
38 |
39 |
40 | UTF-8
41 | 8
42 | 8
43 |
44 |
45 |
46 |
47 |
48 | junit
49 | junit
50 | 4.13.1
51 | test
52 |
53 |
54 |
55 | com.github.jnr
56 | jnr-ffi
57 | 2.2.0
58 | compile
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 | org.apache.maven.plugins
67 | maven-jar-plugin
68 | 2.3.1
69 |
70 |
71 |
72 | org.jnrproject.netdb
73 |
74 |
75 |
76 |
77 |
78 | org.apache.maven.plugins
79 | maven-compiler-plugin
80 | 3.8.1
81 |
82 |
83 |
84 |
85 |
86 |
87 | java9
88 |
89 |
90 |
91 | org.apache.maven.plugins
92 | maven-compiler-plugin
93 |
94 |
95 | ${maven.compiler.target}
96 |
97 |
98 |
99 |
100 |
101 | [9,)
102 |
103 |
104 |
105 |
106 |
107 |
--------------------------------------------------------------------------------
/src/main/java/jnr/netdb/FileProtocolsDB.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2010 Wayne Meissner
3 | *
4 | * This file is part of jnr.
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS,
14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | package jnr.netdb;
20 |
21 | import java.io.File;
22 | import java.io.FileNotFoundException;
23 | import java.io.FileReader;
24 | import java.io.IOException;
25 | import java.io.StringReader;
26 | import java.util.Collection;
27 | import java.util.Collections;
28 | import java.util.LinkedList;
29 | import java.util.List;
30 |
31 | import jnr.ffi.Platform;
32 |
33 | import static jnr.ffi.Platform.OS.WINDOWS;
34 |
35 | /**
36 | *
37 | */
38 | class FileProtocolsDB implements ProtocolsDB {
39 | private final File protocolsFile;
40 |
41 | public static final FileProtocolsDB getInstance() {
42 | return SingletonHolder.INSTANCE;
43 | }
44 |
45 | private static final class SingletonHolder {
46 | public static final FileProtocolsDB INSTANCE = load();
47 | }
48 |
49 | FileProtocolsDB(File protocolsFile) {
50 | this.protocolsFile = protocolsFile;
51 | }
52 |
53 | private static final File locateProtocolsFile() {
54 | if (Platform.getNativePlatform().getOS().equals(WINDOWS)) {
55 | String systemRoot;
56 | try {
57 | // FIXME: %SystemRoot% is typically *not* present in Java env,
58 | // so we need a better way to obtain the Windows location.
59 | // One possible solution: Win32API's SHGetFolderPath() with
60 | // parameter CSIDL_SYSTEM or CSIDL_WINDOWS.
61 | systemRoot = System.getProperty("SystemRoot", "C:\\windows");
62 | } catch (SecurityException se) {
63 | // whoops, try the most logical one
64 | systemRoot = "C:\\windows";
65 | }
66 |
67 | return new File(systemRoot + "\\system32\\drivers\\etc\\protocol");
68 |
69 | } else {
70 | return new File("/etc/protocols");
71 | }
72 | }
73 |
74 | private static FileProtocolsDB load() {
75 | try {
76 | File protocolsFile = locateProtocolsFile();
77 | // Fail unless /etc/protocols can be read and contains at least one valid entry
78 | NetDBParser parser = new NetDBParser(new FileReader(protocolsFile));
79 | try {
80 | parser.iterator().next();
81 | } finally {
82 | parser.close();
83 | }
84 |
85 | return new FileProtocolsDB(protocolsFile);
86 |
87 | } catch (Throwable t) {
88 | return null;
89 | }
90 | }
91 |
92 | public Protocol getProtocolByName(final String name) {
93 |
94 | return parse(new Filter() {
95 |
96 | public boolean filter(Protocol p) {
97 | if (p.getName().equals(name)) {
98 | return true;
99 | }
100 |
101 | for (String alias : p.getAliases()) {
102 | if (alias.equals(name)) {
103 | return true;
104 | }
105 | }
106 |
107 | return false;
108 | }
109 | });
110 | }
111 |
112 | public Protocol getProtocolByNumber(final Integer proto) {
113 | return parse(new Filter() {
114 |
115 | public boolean filter(Protocol p) {
116 | return p.getProto() == proto.intValue();
117 | }
118 | });
119 | }
120 |
121 | public Collection getAllProtocols() {
122 |
123 | final List allProtocols = new LinkedList();
124 |
125 | parse(new Filter() {
126 |
127 | public boolean filter(Protocol s) {
128 | allProtocols.add(s);
129 | return false;
130 | }
131 | });
132 |
133 | return Collections.unmodifiableList(allProtocols);
134 | }
135 |
136 | private final NetDBParser loadProtocolsFile() {
137 | try {
138 | return new NetDBParser(new FileReader(protocolsFile));
139 | } catch (FileNotFoundException ex) {
140 | return new NetDBParser(new StringReader(""));
141 | }
142 | }
143 |
144 | private static interface Filter {
145 | boolean filter(Protocol s);
146 | }
147 |
148 | private final Protocol parse(Filter filter) {
149 | NetDBParser parser = loadProtocolsFile();
150 |
151 | try {
152 | for (NetDBEntry e : parser) {
153 | try {
154 | Protocol p = new Protocol(e.name, Integer.parseInt(e.data, 10), e.aliases);
155 | if (filter.filter(p)) {
156 | return p;
157 | }
158 | } catch (NumberFormatException ex) {}
159 | }
160 |
161 | } finally {
162 | try {
163 | parser.close();
164 | } catch (IOException ex) {
165 | throw new RuntimeException(ex);
166 | }
167 | }
168 |
169 | return null;
170 | }
171 | }
172 |
--------------------------------------------------------------------------------
/src/main/java/jnr/netdb/FileServicesDB.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2010 Wayne Meissner
3 | *
4 | * This file is part of jnr.
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS,
14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | package jnr.netdb;
20 |
21 | import java.io.File;
22 | import java.io.FileNotFoundException;
23 | import java.io.FileReader;
24 | import java.io.IOException;
25 | import java.io.StringReader;
26 | import java.util.Collection;
27 | import java.util.Collections;
28 | import java.util.LinkedList;
29 | import java.util.List;
30 |
31 | /**
32 | * Parses /etc/services
33 | */
34 | final class FileServicesDB implements ServicesDB {
35 | public static String fileName = "/etc/services";
36 |
37 | public static final ServicesDB getInstance() {
38 | return SingletonHolder.INSTANCE;
39 | }
40 |
41 | private static final class SingletonHolder {
42 | public static final ServicesDB INSTANCE = load();
43 | }
44 |
45 | private static final ServicesDB load() {
46 | try {
47 | // Fail unless /etc/services can be read and contains at least one valid entry
48 | NetDBParser parser = parseServicesFile();
49 | try {
50 | parser.iterator().next();
51 | } finally {
52 | parser.close();
53 | }
54 |
55 | return new FileServicesDB();
56 |
57 | } catch (Throwable t) {
58 | return null;
59 | }
60 | }
61 |
62 | static final NetDBParser parseServicesFile() {
63 | try {
64 | return new NetDBParser(new FileReader(new File(fileName)));
65 | } catch (FileNotFoundException ex) {
66 | return new NetDBParser(new StringReader(""));
67 | }
68 | }
69 |
70 | private static final Service parseServicesEntry(NetDBEntry e) {
71 |
72 | String[] portproto = e.data.split("/");
73 | if (portproto.length < 2) {
74 | return null;
75 | }
76 |
77 | int port;
78 | try {
79 | port = Integer.parseInt(portproto[0], 10);
80 | } catch (NumberFormatException ex) {
81 | return null;
82 | }
83 |
84 | return new Service(e.name, port, portproto[1], e.aliases);
85 | }
86 |
87 | private static interface Filter {
88 | boolean filter(Service s);
89 | }
90 |
91 | private final Service parse(Filter filter) {
92 | NetDBParser parser = parseServicesFile();
93 |
94 | try {
95 | for (NetDBEntry e : parser) {
96 | Service s = parseServicesEntry(e);
97 | if (s != null && filter.filter(s)) {
98 | return s;
99 | }
100 | }
101 |
102 | } finally {
103 | try {
104 | parser.close();
105 | } catch (IOException ex) {
106 | throw new RuntimeException(ex);
107 | }
108 | }
109 |
110 | return null;
111 | }
112 |
113 | public Service getServiceByName(final String name, final String proto) {
114 | return parse(new Filter() {
115 |
116 | public boolean filter(Service s) {
117 | if (!s.proto.equals(proto) && proto != null) {
118 | return false;
119 | }
120 |
121 | if (s.getName().equals(name)) {
122 | return true;
123 | }
124 |
125 | for (String alias : s.getAliases()) {
126 | if (alias.equals(name)) {
127 | return true;
128 | }
129 | }
130 |
131 | return false;
132 | }
133 | });
134 | }
135 |
136 | public Service getServiceByPort(final Integer port, final String proto) {
137 | return parse(new Filter() {
138 |
139 | public boolean filter(Service s) {
140 | return s.getPort() == port.intValue() && (s.proto.equals(proto) || proto == null);
141 | }
142 | });
143 | }
144 |
145 | public Collection getAllServices() {
146 |
147 | final List allServices = new LinkedList();
148 |
149 | parse(new Filter() {
150 |
151 | public boolean filter(Service s) {
152 | allServices.add(s);
153 | return false;
154 | }
155 | });
156 |
157 | return Collections.unmodifiableList(allServices);
158 | }
159 | }
160 |
--------------------------------------------------------------------------------
/src/main/java/jnr/netdb/IANAProtocolsDB.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2010 Wayne Meissner
3 | *
4 | * This file is part of jnr.
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS,
14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | package jnr.netdb;
20 |
21 | import java.util.ArrayList;
22 | import java.util.Arrays;
23 | import java.util.Collection;
24 | import java.util.Collections;
25 | import java.util.HashMap;
26 | import java.util.List;
27 | import java.util.Map;
28 |
29 | /**
30 | * Pre-compiled table of IANA protocol numbers
31 | */
32 | class IANAProtocolsDB implements ProtocolsDB {
33 |
34 | private final Map nameToProto;
35 | private final Map numberToProto;
36 |
37 | public static final IANAProtocolsDB getInstance() {
38 | return SingletonHolder.INSTANCE;
39 | }
40 |
41 | private static final class SingletonHolder {
42 | public static final IANAProtocolsDB INSTANCE = initProtocolDB().build();
43 | }
44 |
45 | private IANAProtocolsDB(Map nameToProto, Map numberToProto) {
46 | this.nameToProto = nameToProto;
47 | this.numberToProto = numberToProto;
48 | }
49 |
50 | public Protocol getProtocolByName(String name) {
51 | return nameToProto.get(name);
52 | }
53 |
54 | public Protocol getProtocolByNumber(Integer number) {
55 | return numberToProto.get(number);
56 | }
57 |
58 | public Collection getAllProtocols() {
59 | return Collections.unmodifiableCollection(nameToProto.values());
60 | }
61 |
62 | private static final class ProtocolDBBuilder {
63 | private static final List emptyAliases = Collections.emptyList();
64 | private final Map nameToProto = new HashMap();
65 | private final Map numberToProto = new HashMap();
66 |
67 | public void add(String name, int proto, String... aliases) {
68 | List aliasesList = aliases.length > 0 ? new ArrayList(Arrays.asList(aliases)) : emptyAliases;
69 |
70 | Protocol p = new Protocol(name, proto, aliasesList);
71 | nameToProto.put(name, p);
72 | for (String alias : aliases) {
73 | nameToProto.put(alias, p);
74 | }
75 |
76 | numberToProto.put(proto, p);
77 | }
78 |
79 | public IANAProtocolsDB build() {
80 | return new IANAProtocolsDB(nameToProto, numberToProto);
81 | }
82 | }
83 |
84 | private static final ProtocolDBBuilder initProtocolDB() {
85 | ProtocolDBBuilder builder = new ProtocolDBBuilder();
86 |
87 | builder.add("ip", 0, "IP");
88 | builder.add("icmp", 1, "ICMP");
89 | builder.add("igmp", 2, "IGMP");
90 | builder.add("ggp", 3, "GGP");
91 | builder.add("ipencap", 4, "IP-ENCAP");
92 | builder.add("st2", 5, "ST2");
93 | builder.add("tcp", 6, "TCP");
94 | builder.add("cbt", 7, "CBT");
95 | builder.add("egp", 8, "EGP");
96 | builder.add("igp", 9, "IGP");
97 | builder.add("bbn-rcc", 10, "BBN-RCC-MON");
98 | builder.add("nvp", 11, "NVP-II");
99 | builder.add("pup", 12, "PUP");
100 | builder.add("argus", 13, "ARGUS");
101 | builder.add("emcon", 14, "EMCON");
102 | builder.add("xnet", 15, "XNET");
103 | builder.add("chaos", 16, "CHAOS");
104 | builder.add("udp", 17, "UDP");
105 | builder.add("mux", 18, "MUX");
106 | builder.add("dcn", 19, "DCN-MEAS");
107 | builder.add("hmp", 20, "HMP");
108 | builder.add("prm", 21, "PRM");
109 | builder.add("xns-idp", 22, "XNS-IDP");
110 | builder.add("trunk-1", 23, "TRUNK-1");
111 | builder.add("trunk-2", 24, "TRUNK-2");
112 | builder.add("leaf-1", 25, "LEAF-1");
113 | builder.add("leaf-2", 26, "LEAF-2");
114 | builder.add("rdp", 27, "RDP");
115 | builder.add("irtp", 28, "IRTP");
116 | builder.add("iso-tp4", 29, "ISO-TP4");
117 | builder.add("netblt", 30, "NETBLT");
118 | builder.add("mfe-nsp", 31, "MFE-NSP");
119 | builder.add("merit-inp", 32, "MERIT-INP");
120 | builder.add("sep", 33, "SEP");
121 | builder.add("3pc", 34, "3PC");
122 | builder.add("idpr", 35, "IDPR");
123 | builder.add("xtp", 36, "XTP");
124 | builder.add("ddp", 37, "DDP");
125 | builder.add("idpr-cmtp", 38, "IDPR-CMTP");
126 | builder.add("tp++", 39, "TP++");
127 | builder.add("il", 40, "IL");
128 | builder.add("ipv6", 41, "IPV6");
129 | builder.add("sdrp", 42, "SDRP");
130 | builder.add("ipv6-route", 43, "IPV6-ROUTE");
131 | builder.add("ipv6-frag", 44, "IPV6-FRAG");
132 | builder.add("idrp", 45, "IDRP");
133 | builder.add("rsvp", 46, "RSVP");
134 | builder.add("gre", 47, "GRE");
135 | builder.add("mhrp", 48, "MHRP");
136 | builder.add("bna", 49, "BNA");
137 | builder.add("esp", 50, "ESP");
138 | builder.add("ah", 51, "AH");
139 | builder.add("i-nlsp", 52, "I-NLSP");
140 | builder.add("swipe", 53, "SWIPE");
141 | builder.add("narp", 54, "NARP");
142 | builder.add("mobile", 55, "MOBILE");
143 | builder.add("tlsp", 56, "TLSP");
144 | builder.add("skip", 57, "SKIP");
145 | builder.add("ipv6-icmp", 58, "IPV6-ICMP");
146 | builder.add("ipv6-nonxt", 59, "IPV6-NONXT");
147 | builder.add("ipv6-opts", 60, "IPV6-OPTS");
148 | builder.add("cftp", 62, "CFTP");
149 | builder.add("sat-expak", 64, "SAT-EXPAK");
150 | builder.add("kryptolan", 65, "KRYPTOLAN");
151 | builder.add("rvd", 66, "RVD");
152 | builder.add("ippc", 67, "IPPC");
153 | builder.add("sat-mon", 69, "SAT-MON");
154 | builder.add("visa", 70, "VISA");
155 | builder.add("ipcv", 71, "IPCV");
156 | builder.add("cpnx", 72, "CPNX");
157 | builder.add("cphb", 73, "CPHB");
158 | builder.add("wsn", 74, "WSN");
159 | builder.add("pvp", 75, "PVP");
160 | builder.add("br-sat-mon", 76, "BR-SAT-MON");
161 | builder.add("sun-nd", 77, "SUN-ND");
162 | builder.add("wb-mon", 78, "WB-MON");
163 | builder.add("wb-expak", 79, "WB-EXPAK");
164 | builder.add("iso-ip", 80, "ISO-IP");
165 | builder.add("vmtp", 81, "VMTP");
166 | builder.add("secure-vmtp", 82, "SECURE-VMTP");
167 | builder.add("vines", 83, "VINES");
168 | builder.add("ttp", 84, "TTP");
169 | builder.add("nsfnet-igp", 85, "NSFNET-IGP");
170 | builder.add("dgp", 86, "DGP");
171 | builder.add("tcf", 87, "TCF");
172 | builder.add("eigrp", 88, "EIGRP");
173 | builder.add("ospf", 89, "OSPFIGP");
174 | builder.add("sprite-rpc", 90, "Sprite-RPC");
175 | builder.add("larp", 91, "LARP");
176 | builder.add("mtp", 92, "MTP");
177 | builder.add("ax.25", 93, "AX.25");
178 | builder.add("ipip", 94, "IPIP");
179 | builder.add("micp", 95, "MICP");
180 | builder.add("scc-sp", 96, "SCC-SP");
181 | builder.add("etherip", 97, "ETHERIP");
182 | builder.add("encap", 98, "ENCAP");
183 | builder.add("gmtp", 100, "GMTP");
184 | builder.add("ifmp", 101, "IFMP");
185 | builder.add("pnni", 102, "PNNI");
186 | builder.add("pim", 103, "PIM");
187 | builder.add("aris", 104, "ARIS");
188 | builder.add("scps", 105, "SCPS");
189 | builder.add("qnx", 106, "QNX");
190 | builder.add("a/n", 107, "A/N");
191 | builder.add("ipcomp", 108, "IPComp");
192 | builder.add("snp", 109, "SNP");
193 | builder.add("compaq-peer", 110, "Compaq-Peer");
194 | builder.add("ipx-in-ip", 111, "IPX-in-IP");
195 | builder.add("vrrp", 112, "VRRP");
196 | builder.add("pgm", 113, "PGM");
197 | builder.add("l2tp", 115, "L2TP");
198 | builder.add("ddx", 116, "DDX");
199 | builder.add("iatp", 117, "IATP");
200 | builder.add("st", 118, "ST");
201 | builder.add("srp", 119, "SRP");
202 | builder.add("uti", 120, "UTI");
203 | builder.add("smp", 121, "SMP");
204 | builder.add("sm", 122, "SM");
205 | builder.add("ptp", 123, "PTP");
206 | builder.add("isis", 124, "ISIS");
207 | builder.add("fire", 125, "FIRE");
208 | builder.add("crtp", 126, "CRTP");
209 | builder.add("crdup", 127, "CRUDP");
210 | builder.add("sscopmce", 128, "SSCOPMCE");
211 | builder.add("iplt", 129, "IPLT");
212 | builder.add("sps", 130, "SPS");
213 | builder.add("pipe", 131, "PIPE");
214 | builder.add("sctp", 132, "SCTP");
215 | builder.add("fc", 133, "FC");
216 | builder.add("divert", 254, "DIVERT");
217 |
218 |
219 | return builder;
220 | }
221 | }
222 |
--------------------------------------------------------------------------------
/src/main/java/jnr/netdb/IANAServicesDB.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2010 Wayne Meissner
3 | *
4 | * This file is part of jnr.
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS,
14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | package jnr.netdb;
20 |
21 | import java.util.ArrayList;
22 | import java.util.Collections;
23 | import java.util.Map;
24 | import java.util.HashMap;
25 | import java.util.List;
26 |
27 | final class IANAServicesDB implements ServicesDB {
28 | private final Map tcpPortToService;
29 | private final Map udpPortToService;
30 | private final Map tcpNameToService;
31 | private final Map udpNameToService;
32 | private final List allServices;
33 |
34 | private IANAServicesDB(Map tcpNameToService, Map udpNameToService,
35 | Map tcpServices, Map udpServices) {
36 | this.tcpNameToService = tcpNameToService;
37 | this.udpNameToService = udpNameToService;
38 | this.tcpPortToService = tcpServices;
39 | this.udpPortToService = udpServices;
40 |
41 | List services = new ArrayList(tcpNameToService.size() + udpNameToService.size());
42 | services.addAll(tcpNameToService.values());
43 | services.addAll(udpNameToService.values());
44 | this.allServices = Collections.unmodifiableList(services);
45 | }
46 |
47 | private static final class SingletonHolder {
48 | public static final IANAServicesDB INSTANCE = buildServices();
49 | }
50 |
51 | public static final IANAServicesDB getInstance() {
52 | return SingletonHolder.INSTANCE;
53 | }
54 |
55 | public final Service getServiceByName(String name, String proto) {
56 | if ("tcp".equals(proto)) {
57 | return tcpNameToService.get(name);
58 |
59 | } else if ("udp".equals(proto)) {
60 | return udpNameToService.get(name);
61 |
62 | } else if (proto == null) {
63 | // a proto of null matches any service protocol
64 | Service s = tcpNameToService.get(name);
65 | return s != null ? s : udpNameToService.get(name);
66 |
67 | } else {
68 | return null;
69 | }
70 | }
71 |
72 |
73 | public final Service getServiceByPort(Integer port, String proto) {
74 | if ("tcp".equals(proto)) {
75 | return tcpPortToService.get(port);
76 |
77 | } else if ("udp".equals(proto)) {
78 | return udpPortToService.get(port);
79 |
80 | } else if (proto == null) {
81 | // a proto of null matches any service protocol
82 | Service s = tcpPortToService.get(port);
83 | return s != null ? s : udpPortToService.get(port);
84 |
85 | } else {
86 | return null;
87 | }
88 | }
89 |
90 | public final List getAllServices() {
91 | return allServices;
92 | }
93 |
94 | private static final class ServicesBuilder {
95 | private static final List emptyAliases = Collections.emptyList();
96 | final Map tcpNameToService = new HashMap();
97 | final Map udpNameToService = new HashMap();
98 | final Map tcpPortToService = new HashMap();
99 | final Map udpPortToService = new HashMap();
100 |
101 | public final void add(String service, int port) {
102 | String[] descr = service.split("/");
103 |
104 | add(descr[0], descr[1], port);
105 | }
106 |
107 | public final void add(String service, String proto, int port) {
108 |
109 | Service s = new Service(service, port, proto, emptyAliases);
110 |
111 | if ("tcp".equals(proto)) {
112 | tcpNameToService.put(service, s);
113 | tcpPortToService.put(port, s);
114 |
115 | } else if ("udp".equals(proto)) {
116 | udpNameToService.put(service, s);
117 | udpPortToService.put(port, s);
118 | }
119 | }
120 |
121 | IANAServicesDB build() {
122 | return new IANAServicesDB(tcpNameToService, udpNameToService, tcpPortToService, udpPortToService);
123 | }
124 | }
125 |
126 | private static final IANAServicesDB buildServices() {
127 |
128 | ServicesBuilder builder = new ServicesBuilder();
129 |
130 | builder.add("spr-itunes", "tcp", 0);
131 |
132 | builder.add("spl-itunes", "tcp", 0);
133 |
134 | builder.add("tcpmux", "tcp", 1);
135 |
136 | builder.add("tcpmux", "udp", 1);
137 |
138 | builder.add("compressnet", "tcp", 2);
139 |
140 | builder.add("compressnet", "udp", 2);
141 |
142 | builder.add("compressnet", "tcp", 3);
143 |
144 | builder.add("compressnet", "udp", 3);
145 |
146 | builder.add("rje", "tcp", 5);
147 |
148 | builder.add("rje", "udp", 5);
149 |
150 | builder.add("echo", "tcp", 7);
151 |
152 | builder.add("echo", "udp", 7);
153 |
154 | builder.add("discard", "tcp", 9);
155 |
156 | builder.add("discard", "udp", 9);
157 |
158 | builder.add("discard/sctp", 9);
159 |
160 | builder.add("discard/dccp", 9);
161 |
162 | builder.add("systat", "tcp", 11);
163 |
164 | builder.add("systat", "udp", 11);
165 |
166 | builder.add("daytime", "tcp", 13);
167 |
168 | builder.add("daytime", "udp", 13);
169 |
170 | builder.add("qotd", "tcp", 17);
171 |
172 | builder.add("qotd", "udp", 17);
173 |
174 | builder.add("msp", "tcp", 18);
175 |
176 | builder.add("msp", "udp", 18);
177 |
178 | builder.add("chargen", "tcp", 19);
179 |
180 | builder.add("chargen", "udp", 19);
181 |
182 | builder.add("ftp-data", "tcp", 20);
183 |
184 | builder.add("ftp-data", "udp", 20);
185 |
186 | builder.add("ftp-data/sctp", 20);
187 |
188 | builder.add("ftp", "tcp", 21);
189 |
190 | builder.add("ftp", "udp", 21);
191 |
192 | builder.add("ftp/sctp", 21);
193 |
194 | builder.add("ssh", "tcp", 22);
195 |
196 | builder.add("ssh", "udp", 22);
197 |
198 | builder.add("ssh/sctp", 22);
199 |
200 | builder.add("telnet", "tcp", 23);
201 |
202 | builder.add("telnet", "udp", 23);
203 |
204 | builder.add("smtp", "tcp", 25);
205 |
206 | builder.add("smtp", "udp", 25);
207 |
208 | builder.add("nsw-fe", "tcp", 27);
209 |
210 | builder.add("nsw-fe", "udp", 27);
211 |
212 | builder.add("msg-icp", "tcp", 29);
213 |
214 | builder.add("msg-icp", "udp", 29);
215 |
216 | builder.add("msg-auth", "tcp", 31);
217 |
218 | builder.add("msg-auth", "udp", 31);
219 |
220 | builder.add("dsp", "tcp", 33);
221 |
222 | builder.add("dsp", "udp", 33);
223 |
224 | builder.add("time", "tcp", 37);
225 |
226 | builder.add("time", "udp", 37);
227 |
228 | builder.add("rap", "tcp", 38);
229 |
230 | builder.add("rap", "udp", 38);
231 |
232 | builder.add("rlp", "tcp", 39);
233 |
234 | builder.add("rlp", "udp", 39);
235 |
236 | builder.add("graphics", "tcp", 41);
237 |
238 | builder.add("graphics", "udp", 41);
239 |
240 | builder.add("name", "tcp", 42);
241 |
242 | builder.add("name", "udp", 42);
243 |
244 | builder.add("nameserver", "tcp", 42);
245 |
246 | builder.add("nameserver", "udp", 42);
247 |
248 | builder.add("nicname", "tcp", 43);
249 |
250 | builder.add("nicname", "udp", 43);
251 |
252 | builder.add("mpm-flags", "tcp", 44);
253 |
254 | builder.add("mpm-flags", "udp", 44);
255 |
256 | builder.add("mpm", "tcp", 45);
257 |
258 | builder.add("mpm", "udp", 45);
259 |
260 | builder.add("mpm-snd", "tcp", 46);
261 |
262 | builder.add("mpm-snd", "udp", 46);
263 |
264 | builder.add("ni-ftp", "tcp", 47);
265 |
266 | builder.add("ni-ftp", "udp", 47);
267 |
268 | builder.add("auditd", "tcp", 48);
269 |
270 | builder.add("auditd", "udp", 48);
271 |
272 | builder.add("tacacs", "tcp", 49);
273 |
274 | builder.add("tacacs", "udp", 49);
275 |
276 | builder.add("re-mail-ck", "tcp", 50);
277 |
278 | builder.add("re-mail-ck", "udp", 50);
279 |
280 | builder.add("la-maint", "tcp", 51);
281 |
282 | builder.add("la-maint", "udp", 51);
283 |
284 | builder.add("xns-time", "tcp", 52);
285 |
286 | builder.add("xns-time", "udp", 52);
287 |
288 | builder.add("domain", "tcp", 53);
289 |
290 | builder.add("domain", "udp", 53);
291 |
292 | builder.add("xns-ch", "tcp", 54);
293 |
294 | builder.add("xns-ch", "udp", 54);
295 |
296 | builder.add("isi-gl", "tcp", 55);
297 |
298 | builder.add("isi-gl", "udp", 55);
299 |
300 | builder.add("xns-auth", "tcp", 56);
301 |
302 | builder.add("xns-auth", "udp", 56);
303 |
304 | builder.add("xns-mail", "tcp", 58);
305 |
306 | builder.add("xns-mail", "udp", 58);
307 |
308 | builder.add("ni-mail", "tcp", 61);
309 |
310 | builder.add("ni-mail", "udp", 61);
311 |
312 | builder.add("acas", "tcp", 62);
313 |
314 | builder.add("acas", "udp", 62);
315 |
316 | builder.add("whois++", "tcp", 63);
317 |
318 | builder.add("whois++", "udp", 63);
319 |
320 | builder.add("covia", "tcp", 64);
321 |
322 | builder.add("covia", "udp", 64);
323 |
324 | builder.add("tacacs-ds", "tcp", 65);
325 |
326 | builder.add("tacacs-ds", "udp", 65);
327 |
328 | builder.add("sql*net", "tcp", 66);
329 |
330 | builder.add("sql*net", "udp", 66);
331 |
332 | builder.add("bootps", "tcp", 67);
333 |
334 | builder.add("bootps", "udp", 67);
335 |
336 | builder.add("bootpc", "tcp", 68);
337 |
338 | builder.add("bootpc", "udp", 68);
339 |
340 | builder.add("tftp", "tcp", 69);
341 |
342 | builder.add("tftp", "udp", 69);
343 |
344 | builder.add("gopher", "tcp", 70);
345 |
346 | builder.add("gopher", "udp", 70);
347 |
348 | builder.add("netrjs-1", "tcp", 71);
349 |
350 | builder.add("netrjs-1", "udp", 71);
351 |
352 | builder.add("netrjs-2", "tcp", 72);
353 |
354 | builder.add("netrjs-2", "udp", 72);
355 |
356 | builder.add("netrjs-3", "tcp", 73);
357 |
358 | builder.add("netrjs-3", "udp", 73);
359 |
360 | builder.add("netrjs-4", "tcp", 74);
361 |
362 | builder.add("netrjs-4", "udp", 74);
363 |
364 | builder.add("deos", "tcp", 76);
365 |
366 | builder.add("deos", "udp", 76);
367 |
368 | builder.add("vettcp", "tcp", 78);
369 |
370 | builder.add("vettcp", "udp", 78);
371 |
372 | builder.add("finger", "tcp", 79);
373 |
374 | builder.add("finger", "udp", 79);
375 |
376 | builder.add("http", "tcp", 80);
377 |
378 | builder.add("http", "udp", 80);
379 |
380 | builder.add("www", "tcp", 80);
381 |
382 | builder.add("www", "udp", 80);
383 |
384 | builder.add("www-http", "tcp", 80);
385 |
386 | builder.add("www-http", "udp", 80);
387 |
388 | builder.add("http/sctp", 80);
389 |
390 | builder.add("xfer", "tcp", 82);
391 |
392 | builder.add("xfer", "udp", 82);
393 |
394 | builder.add("mit-ml-dev", "tcp", 83);
395 |
396 | builder.add("mit-ml-dev", "udp", 83);
397 |
398 | builder.add("ctf", "tcp", 84);
399 |
400 | builder.add("ctf", "udp", 84);
401 |
402 | builder.add("mit-ml-dev", "tcp", 85);
403 |
404 | builder.add("mit-ml-dev", "udp", 85);
405 |
406 | builder.add("mfcobol", "tcp", 86);
407 |
408 | builder.add("mfcobol", "udp", 86);
409 |
410 | builder.add("kerberos", "tcp", 88);
411 |
412 | builder.add("kerberos", "udp", 88);
413 |
414 | builder.add("su-mit-tg", "tcp", 89);
415 |
416 | builder.add("su-mit-tg", "udp", 89);
417 |
418 | builder.add("dnsix", "tcp", 90);
419 |
420 | builder.add("dnsix", "udp", 90);
421 |
422 | builder.add("mit-dov", "tcp", 91);
423 |
424 | builder.add("mit-dov", "udp", 91);
425 |
426 | builder.add("npp", "tcp", 92);
427 |
428 | builder.add("npp", "udp", 92);
429 |
430 | builder.add("dcp", "tcp", 93);
431 |
432 | builder.add("dcp", "udp", 93);
433 |
434 | builder.add("objcall", "tcp", 94);
435 |
436 | builder.add("objcall", "udp", 94);
437 |
438 | builder.add("supdup", "tcp", 95);
439 |
440 | builder.add("supdup", "udp", 95);
441 |
442 | builder.add("dixie", "tcp", 96);
443 |
444 | builder.add("dixie", "udp", 96);
445 |
446 | builder.add("swift-rvf", "tcp", 97);
447 |
448 | builder.add("swift-rvf", "udp", 97);
449 |
450 | builder.add("tacnews", "tcp", 98);
451 |
452 | builder.add("tacnews", "udp", 98);
453 |
454 | builder.add("metagram", "tcp", 99);
455 |
456 | builder.add("metagram", "udp", 99);
457 |
458 | builder.add("newacct", "tcp", 100);
459 |
460 | builder.add("hostname", "tcp", 101);
461 |
462 | builder.add("hostname", "udp", 101);
463 |
464 | builder.add("iso-tsap", "tcp", 102);
465 |
466 | builder.add("iso-tsap", "udp", 102);
467 |
468 | builder.add("gppitnp", "tcp", 103);
469 |
470 | builder.add("gppitnp", "udp", 103);
471 |
472 | builder.add("acr-nema", "tcp", 104);
473 |
474 | builder.add("acr-nema", "udp", 104);
475 |
476 | builder.add("cso", "tcp", 105);
477 |
478 | builder.add("cso", "udp", 105);
479 |
480 | builder.add("csnet-ns", "tcp", 105);
481 |
482 | builder.add("csnet-ns", "udp", 105);
483 |
484 | builder.add("3com-tsmux", "tcp", 106);
485 |
486 | builder.add("3com-tsmux", "udp", 106);
487 |
488 | builder.add("rtelnet", "tcp", 107);
489 |
490 | builder.add("rtelnet", "udp", 107);
491 |
492 | builder.add("snagas", "tcp", 108);
493 |
494 | builder.add("snagas", "udp", 108);
495 |
496 | builder.add("pop2", "tcp", 109);
497 |
498 | builder.add("pop2", "udp", 109);
499 |
500 | builder.add("pop3", "tcp", 110);
501 |
502 | builder.add("pop3", "udp", 110);
503 |
504 | builder.add("sunrpc", "tcp", 111);
505 |
506 | builder.add("sunrpc", "udp", 111);
507 |
508 | builder.add("mcidas", "tcp", 112);
509 |
510 | builder.add("mcidas", "udp", 112);
511 |
512 | builder.add("ident", "tcp", 113);
513 |
514 | builder.add("auth", "tcp", 113);
515 |
516 | builder.add("auth", "udp", 113);
517 |
518 | builder.add("sftp", "tcp", 115);
519 |
520 | builder.add("sftp", "udp", 115);
521 |
522 | builder.add("ansanotify", "tcp", 116);
523 |
524 | builder.add("ansanotify", "udp", 116);
525 |
526 | builder.add("uucp-path", "tcp", 117);
527 |
528 | builder.add("uucp-path", "udp", 117);
529 |
530 | builder.add("sqlserv", "tcp", 118);
531 |
532 | builder.add("sqlserv", "udp", 118);
533 |
534 | builder.add("nntp", "tcp", 119);
535 |
536 | builder.add("nntp", "udp", 119);
537 |
538 | builder.add("cfdptkt", "tcp", 120);
539 |
540 | builder.add("cfdptkt", "udp", 120);
541 |
542 | builder.add("erpc", "tcp", 121);
543 |
544 | builder.add("erpc", "udp", 121);
545 |
546 | builder.add("smakynet", "tcp", 122);
547 |
548 | builder.add("smakynet", "udp", 122);
549 |
550 | builder.add("ntp", "tcp", 123);
551 |
552 | builder.add("ntp", "udp", 123);
553 |
554 | builder.add("ansatrader", "tcp", 124);
555 |
556 | builder.add("ansatrader", "udp", 124);
557 |
558 | builder.add("locus-map", "tcp", 125);
559 |
560 | builder.add("locus-map", "udp", 125);
561 |
562 | builder.add("nxedit", "tcp", 126);
563 |
564 | builder.add("nxedit", "udp", 126);
565 |
566 | builder.add("locus-con", "tcp", 127);
567 |
568 | builder.add("locus-con", "udp", 127);
569 |
570 | builder.add("gss-xlicen", "tcp", 128);
571 |
572 | builder.add("gss-xlicen", "udp", 128);
573 |
574 | builder.add("pwdgen", "tcp", 129);
575 |
576 | builder.add("pwdgen", "udp", 129);
577 |
578 | builder.add("cisco-fna", "tcp", 130);
579 |
580 | builder.add("cisco-fna", "udp", 130);
581 |
582 | builder.add("cisco-tna", "tcp", 131);
583 |
584 | builder.add("cisco-tna", "udp", 131);
585 |
586 | builder.add("cisco-sys", "tcp", 132);
587 |
588 | builder.add("cisco-sys", "udp", 132);
589 |
590 | builder.add("statsrv", "tcp", 133);
591 |
592 | builder.add("statsrv", "udp", 133);
593 |
594 | builder.add("ingres-net", "tcp", 134);
595 |
596 | builder.add("ingres-net", "udp", 134);
597 |
598 | builder.add("epmap", "tcp", 135);
599 |
600 | builder.add("epmap", "udp", 135);
601 |
602 | builder.add("profile", "tcp", 136);
603 |
604 | builder.add("profile", "udp", 136);
605 |
606 | builder.add("netbios-ns", "tcp", 137);
607 |
608 | builder.add("netbios-ns", "udp", 137);
609 |
610 | builder.add("netbios-dgm", "tcp", 138);
611 |
612 | builder.add("netbios-dgm", "udp", 138);
613 |
614 | builder.add("netbios-ssn", "tcp", 139);
615 |
616 | builder.add("netbios-ssn", "udp", 139);
617 |
618 | builder.add("emfis-data", "tcp", 140);
619 |
620 | builder.add("emfis-data", "udp", 140);
621 |
622 | builder.add("emfis-cntl", "tcp", 141);
623 |
624 | builder.add("emfis-cntl", "udp", 141);
625 |
626 | builder.add("bl-idm", "tcp", 142);
627 |
628 | builder.add("bl-idm", "udp", 142);
629 |
630 | builder.add("imap", "tcp", 143);
631 |
632 | builder.add("imap", "udp", 143);
633 |
634 | builder.add("uma", "tcp", 144);
635 |
636 | builder.add("uma", "udp", 144);
637 |
638 | builder.add("uaac", "tcp", 145);
639 |
640 | builder.add("uaac", "udp", 145);
641 |
642 | builder.add("iso-tp0", "tcp", 146);
643 |
644 | builder.add("iso-tp0", "udp", 146);
645 |
646 | builder.add("iso-ip", "tcp", 147);
647 |
648 | builder.add("iso-ip", "udp", 147);
649 |
650 | builder.add("jargon", "tcp", 148);
651 |
652 | builder.add("jargon", "udp", 148);
653 |
654 | builder.add("aed-512", "tcp", 149);
655 |
656 | builder.add("aed-512", "udp", 149);
657 |
658 | builder.add("sql-net", "tcp", 150);
659 |
660 | builder.add("sql-net", "udp", 150);
661 |
662 | builder.add("hems", "tcp", 151);
663 |
664 | builder.add("hems", "udp", 151);
665 |
666 | builder.add("bftp", "tcp", 152);
667 |
668 | builder.add("bftp", "udp", 152);
669 |
670 | builder.add("sgmp", "tcp", 153);
671 |
672 | builder.add("sgmp", "udp", 153);
673 |
674 | builder.add("netsc-prod", "tcp", 154);
675 |
676 | builder.add("netsc-prod", "udp", 154);
677 |
678 | builder.add("netsc-dev", "tcp", 155);
679 |
680 | builder.add("netsc-dev", "udp", 155);
681 |
682 | builder.add("sqlsrv", "tcp", 156);
683 |
684 | builder.add("sqlsrv", "udp", 156);
685 |
686 | builder.add("knet-cmp", "tcp", 157);
687 |
688 | builder.add("knet-cmp", "udp", 157);
689 |
690 | builder.add("pcmail-srv", "tcp", 158);
691 |
692 | builder.add("pcmail-srv", "udp", 158);
693 |
694 | builder.add("nss-routing", "tcp", 159);
695 |
696 | builder.add("nss-routing", "udp", 159);
697 |
698 | builder.add("sgmp-traps", "tcp", 160);
699 |
700 | builder.add("sgmp-traps", "udp", 160);
701 |
702 | builder.add("snmp", "tcp", 161);
703 |
704 | builder.add("snmp", "udp", 161);
705 |
706 | builder.add("snmptrap", "tcp", 162);
707 |
708 | builder.add("snmptrap", "udp", 162);
709 |
710 | builder.add("cmip-man", "tcp", 163);
711 |
712 | builder.add("cmip-man", "udp", 163);
713 |
714 | builder.add("cmip-agent", "tcp", 164);
715 |
716 | builder.add("cmip-agent", "udp", 164);
717 |
718 | builder.add("xns-courier", "tcp", 165);
719 |
720 | builder.add("xns-courier", "udp", 165);
721 |
722 | builder.add("s-net", "tcp", 166);
723 |
724 | builder.add("s-net", "udp", 166);
725 |
726 | builder.add("namp", "tcp", 167);
727 |
728 | builder.add("namp", "udp", 167);
729 |
730 | builder.add("rsvd", "tcp", 168);
731 |
732 | builder.add("rsvd", "udp", 168);
733 |
734 | builder.add("send", "tcp", 169);
735 |
736 | builder.add("send", "udp", 169);
737 |
738 | builder.add("print-srv", "tcp", 170);
739 |
740 | builder.add("print-srv", "udp", 170);
741 |
742 | builder.add("multiplex", "tcp", 171);
743 |
744 | builder.add("multiplex", "udp", 171);
745 |
746 | builder.add("cl/1", "tcp", 172);
747 |
748 | builder.add("cl/1", "udp", 172);
749 |
750 | builder.add("xyplex-mux", "tcp", 173);
751 |
752 | builder.add("xyplex-mux", "udp", 173);
753 |
754 | builder.add("mailq", "tcp", 174);
755 |
756 | builder.add("mailq", "udp", 174);
757 |
758 | builder.add("vmnet", "tcp", 175);
759 |
760 | builder.add("vmnet", "udp", 175);
761 |
762 | builder.add("genrad-mux", "tcp", 176);
763 |
764 | builder.add("genrad-mux", "udp", 176);
765 |
766 | builder.add("xdmcp", "tcp", 177);
767 |
768 | builder.add("xdmcp", "udp", 177);
769 |
770 | builder.add("nextstep", "tcp", 178);
771 |
772 | builder.add("nextstep", "udp", 178);
773 |
774 | builder.add("bgp", "tcp", 179);
775 |
776 | builder.add("bgp", "udp", 179);
777 |
778 | builder.add("bgp/sctp", 179);
779 |
780 | builder.add("ris", "tcp", 180);
781 |
782 | builder.add("ris", "udp", 180);
783 |
784 | builder.add("unify", "tcp", 181);
785 |
786 | builder.add("unify", "udp", 181);
787 |
788 | builder.add("audit", "tcp", 182);
789 |
790 | builder.add("audit", "udp", 182);
791 |
792 | builder.add("ocbinder", "tcp", 183);
793 |
794 | builder.add("ocbinder", "udp", 183);
795 |
796 | builder.add("ocserver", "tcp", 184);
797 |
798 | builder.add("ocserver", "udp", 184);
799 |
800 | builder.add("remote-kis", "tcp", 185);
801 |
802 | builder.add("remote-kis", "udp", 185);
803 |
804 | builder.add("kis", "tcp", 186);
805 |
806 | builder.add("kis", "udp", 186);
807 |
808 | builder.add("aci", "tcp", 187);
809 |
810 | builder.add("aci", "udp", 187);
811 |
812 | builder.add("mumps", "tcp", 188);
813 |
814 | builder.add("mumps", "udp", 188);
815 |
816 | builder.add("qft", "tcp", 189);
817 |
818 | builder.add("qft", "udp", 189);
819 |
820 | builder.add("gacp", "tcp", 190);
821 |
822 | builder.add("gacp", "udp", 190);
823 |
824 | builder.add("prospero", "tcp", 191);
825 |
826 | builder.add("prospero", "udp", 191);
827 |
828 | builder.add("osu-nms", "tcp", 192);
829 |
830 | builder.add("osu-nms", "udp", 192);
831 |
832 | builder.add("srmp", "tcp", 193);
833 |
834 | builder.add("srmp", "udp", 193);
835 |
836 | builder.add("irc", "tcp", 194);
837 |
838 | builder.add("irc", "udp", 194);
839 |
840 | builder.add("dn6-nlm-aud", "tcp", 195);
841 |
842 | builder.add("dn6-nlm-aud", "udp", 195);
843 |
844 | builder.add("dn6-smm-red", "tcp", 196);
845 |
846 | builder.add("dn6-smm-red", "udp", 196);
847 |
848 | builder.add("dls", "tcp", 197);
849 |
850 | builder.add("dls", "udp", 197);
851 |
852 | builder.add("dls-mon", "tcp", 198);
853 |
854 | builder.add("dls-mon", "udp", 198);
855 |
856 | builder.add("smux", "tcp", 199);
857 |
858 | builder.add("smux", "udp", 199);
859 |
860 | builder.add("src", "tcp", 200);
861 |
862 | builder.add("src", "udp", 200);
863 |
864 | builder.add("at-rtmp", "tcp", 201);
865 |
866 | builder.add("at-rtmp", "udp", 201);
867 |
868 | builder.add("at-nbp", "tcp", 202);
869 |
870 | builder.add("at-nbp", "udp", 202);
871 |
872 | builder.add("at-3", "tcp", 203);
873 |
874 | builder.add("at-3", "udp", 203);
875 |
876 | builder.add("at-echo", "tcp", 204);
877 |
878 | builder.add("at-echo", "udp", 204);
879 |
880 | builder.add("at-5", "tcp", 205);
881 |
882 | builder.add("at-5", "udp", 205);
883 |
884 | builder.add("at-zis", "tcp", 206);
885 |
886 | builder.add("at-zis", "udp", 206);
887 |
888 | builder.add("at-7", "tcp", 207);
889 |
890 | builder.add("at-7", "udp", 207);
891 |
892 | builder.add("at-8", "tcp", 208);
893 |
894 | builder.add("at-8", "udp", 208);
895 |
896 | builder.add("qmtp", "tcp", 209);
897 |
898 | builder.add("qmtp", "udp", 209);
899 |
900 | builder.add("z39.50", "tcp", 210);
901 |
902 | builder.add("z39.50", "udp", 210);
903 |
904 | builder.add("914c/g", "tcp", 211);
905 |
906 | builder.add("914c/g", "udp", 211);
907 |
908 | builder.add("anet", "tcp", 212);
909 |
910 | builder.add("anet", "udp", 212);
911 |
912 | builder.add("ipx", "tcp", 213);
913 |
914 | builder.add("ipx", "udp", 213);
915 |
916 | builder.add("vmpwscs", "tcp", 214);
917 |
918 | builder.add("vmpwscs", "udp", 214);
919 |
920 | builder.add("softpc", "tcp", 215);
921 |
922 | builder.add("softpc", "udp", 215);
923 |
924 | builder.add("CAIlic", "tcp", 216);
925 |
926 | builder.add("CAIlic", "udp", 216);
927 |
928 | builder.add("dbase", "tcp", 217);
929 |
930 | builder.add("dbase", "udp", 217);
931 |
932 | builder.add("mpp", "tcp", 218);
933 |
934 | builder.add("mpp", "udp", 218);
935 |
936 | builder.add("uarps", "tcp", 219);
937 |
938 | builder.add("uarps", "udp", 219);
939 |
940 | builder.add("imap3", "tcp", 220);
941 |
942 | builder.add("imap3", "udp", 220);
943 |
944 | builder.add("fln-spx", "tcp", 221);
945 |
946 | builder.add("fln-spx", "udp", 221);
947 |
948 | builder.add("rsh-spx", "tcp", 222);
949 |
950 | builder.add("rsh-spx", "udp", 222);
951 |
952 | builder.add("cdc", "tcp", 223);
953 |
954 | builder.add("cdc", "udp", 223);
955 |
956 | builder.add("masqdialer", "tcp", 224);
957 |
958 | builder.add("masqdialer", "udp", 224);
959 |
960 | builder.add("direct", "tcp", 242);
961 |
962 | builder.add("direct", "udp", 242);
963 |
964 | builder.add("sur-meas", "tcp", 243);
965 |
966 | builder.add("sur-meas", "udp", 243);
967 |
968 | builder.add("inbusiness", "tcp", 244);
969 |
970 | builder.add("inbusiness", "udp", 244);
971 |
972 | builder.add("link", "tcp", 245);
973 |
974 | builder.add("link", "udp", 245);
975 |
976 | builder.add("dsp3270", "tcp", 246);
977 |
978 | builder.add("dsp3270", "udp", 246);
979 |
980 | builder.add("subntbcst_tftp", "tcp", 247);
981 |
982 | builder.add("subntbcst_tftp", "udp", 247);
983 |
984 | builder.add("bhfhs", "tcp", 248);
985 |
986 | builder.add("bhfhs", "udp", 248);
987 |
988 | builder.add("rap", "tcp", 256);
989 |
990 | builder.add("rap", "udp", 256);
991 |
992 | builder.add("set", "tcp", 257);
993 |
994 | builder.add("set", "udp", 257);
995 |
996 | builder.add("esro-gen", "tcp", 259);
997 |
998 | builder.add("esro-gen", "udp", 259);
999 |
1000 | builder.add("openport", "tcp", 260);
1001 |
1002 | builder.add("openport", "udp", 260);
1003 |
1004 | builder.add("nsiiops", "tcp", 261);
1005 |
1006 | builder.add("nsiiops", "udp", 261);
1007 |
1008 | builder.add("arcisdms", "tcp", 262);
1009 |
1010 | builder.add("arcisdms", "udp", 262);
1011 |
1012 | builder.add("hdap", "tcp", 263);
1013 |
1014 | builder.add("hdap", "udp", 263);
1015 |
1016 | builder.add("bgmp", "tcp", 264);
1017 |
1018 | builder.add("bgmp", "udp", 264);
1019 |
1020 | builder.add("x-bone-ctl", "tcp", 265);
1021 |
1022 | builder.add("x-bone-ctl", "udp", 265);
1023 |
1024 | builder.add("sst", "tcp", 266);
1025 |
1026 | builder.add("sst", "udp", 266);
1027 |
1028 | builder.add("td-service", "tcp", 267);
1029 |
1030 | builder.add("td-service", "udp", 267);
1031 |
1032 | builder.add("td-replica", "tcp", 268);
1033 |
1034 | builder.add("td-replica", "udp", 268);
1035 |
1036 | builder.add("manet", "tcp", 269);
1037 |
1038 | builder.add("manet", "udp", 269);
1039 |
1040 | builder.add("http-mgmt", "tcp", 280);
1041 |
1042 | builder.add("http-mgmt", "udp", 280);
1043 |
1044 | builder.add("personal-link", "tcp", 281);
1045 |
1046 | builder.add("personal-link", "udp", 281);
1047 |
1048 | builder.add("cableport-ax", "tcp", 282);
1049 |
1050 | builder.add("cableport-ax", "udp", 282);
1051 |
1052 | builder.add("rescap", "tcp", 283);
1053 |
1054 | builder.add("rescap", "udp", 283);
1055 |
1056 | builder.add("corerjd", "tcp", 284);
1057 |
1058 | builder.add("corerjd", "udp", 284);
1059 |
1060 | builder.add("fxp", "tcp", 286);
1061 |
1062 | builder.add("fxp", "udp", 286);
1063 |
1064 | builder.add("k-block", "tcp", 287);
1065 |
1066 | builder.add("k-block", "udp", 287);
1067 |
1068 | builder.add("novastorbakcup", "tcp", 308);
1069 |
1070 | builder.add("novastorbakcup", "udp", 308);
1071 |
1072 | builder.add("entrusttime", "tcp", 309);
1073 |
1074 | builder.add("entrusttime", "udp", 309);
1075 |
1076 | builder.add("bhmds", "tcp", 310);
1077 |
1078 | builder.add("bhmds", "udp", 310);
1079 |
1080 | builder.add("asip-webadmin", "tcp", 311);
1081 |
1082 | builder.add("asip-webadmin", "udp", 311);
1083 |
1084 | builder.add("vslmp", "tcp", 312);
1085 |
1086 | builder.add("vslmp", "udp", 312);
1087 |
1088 | builder.add("magenta-logic", "tcp", 313);
1089 |
1090 | builder.add("magenta-logic", "udp", 313);
1091 |
1092 | builder.add("opalis-robot", "tcp", 314);
1093 |
1094 | builder.add("opalis-robot", "udp", 314);
1095 |
1096 | builder.add("dpsi", "tcp", 315);
1097 |
1098 | builder.add("dpsi", "udp", 315);
1099 |
1100 | builder.add("decauth", "tcp", 316);
1101 |
1102 | builder.add("decauth", "udp", 316);
1103 |
1104 | builder.add("zannet", "tcp", 317);
1105 |
1106 | builder.add("zannet", "udp", 317);
1107 |
1108 | builder.add("pkix-timestamp", "tcp", 318);
1109 |
1110 | builder.add("pkix-timestamp", "udp", 318);
1111 |
1112 | builder.add("ptp-event", "tcp", 319);
1113 |
1114 | builder.add("ptp-event", "udp", 319);
1115 |
1116 | builder.add("ptp-general", "tcp", 320);
1117 |
1118 | builder.add("ptp-general", "udp", 320);
1119 |
1120 | builder.add("pip", "tcp", 321);
1121 |
1122 | builder.add("pip", "udp", 321);
1123 |
1124 | builder.add("rtsps", "tcp", 322);
1125 |
1126 | builder.add("rtsps", "udp", 322);
1127 |
1128 | builder.add("texar", "tcp", 333);
1129 |
1130 | builder.add("texar", "udp", 333);
1131 |
1132 | builder.add("pdap", "tcp", 344);
1133 |
1134 | builder.add("pdap", "udp", 344);
1135 |
1136 | builder.add("pawserv", "tcp", 345);
1137 |
1138 | builder.add("pawserv", "udp", 345);
1139 |
1140 | builder.add("zserv", "tcp", 346);
1141 |
1142 | builder.add("zserv", "udp", 346);
1143 |
1144 | builder.add("fatserv", "tcp", 347);
1145 |
1146 | builder.add("fatserv", "udp", 347);
1147 |
1148 | builder.add("csi-sgwp", "tcp", 348);
1149 |
1150 | builder.add("csi-sgwp", "udp", 348);
1151 |
1152 | builder.add("mftp", "tcp", 349);
1153 |
1154 | builder.add("mftp", "udp", 349);
1155 |
1156 | builder.add("matip-type-a", "tcp", 350);
1157 |
1158 | builder.add("matip-type-a", "udp", 350);
1159 |
1160 | builder.add("matip-type-b", "tcp", 351);
1161 |
1162 | builder.add("matip-type-b", "udp", 351);
1163 |
1164 | builder.add("bhoetty", "tcp", 351);
1165 |
1166 | builder.add("bhoetty", "udp", 351);
1167 |
1168 | builder.add("dtag-ste-sb", "tcp", 352);
1169 |
1170 | builder.add("dtag-ste-sb", "udp", 352);
1171 |
1172 | builder.add("bhoedap4", "tcp", 352);
1173 |
1174 | builder.add("bhoedap4", "udp", 352);
1175 |
1176 | builder.add("ndsauth", "tcp", 353);
1177 |
1178 | builder.add("ndsauth", "udp", 353);
1179 |
1180 | builder.add("bh611", "tcp", 354);
1181 |
1182 | builder.add("bh611", "udp", 354);
1183 |
1184 | builder.add("datex-asn", "tcp", 355);
1185 |
1186 | builder.add("datex-asn", "udp", 355);
1187 |
1188 | builder.add("cloanto-net-1", "tcp", 356);
1189 |
1190 | builder.add("cloanto-net-1", "udp", 356);
1191 |
1192 | builder.add("bhevent", "tcp", 357);
1193 |
1194 | builder.add("bhevent", "udp", 357);
1195 |
1196 | builder.add("shrinkwrap", "tcp", 358);
1197 |
1198 | builder.add("shrinkwrap", "udp", 358);
1199 |
1200 | builder.add("nsrmp", "tcp", 359);
1201 |
1202 | builder.add("nsrmp", "udp", 359);
1203 |
1204 | builder.add("scoi2odialog", "tcp", 360);
1205 |
1206 | builder.add("scoi2odialog", "udp", 360);
1207 |
1208 | builder.add("semantix", "tcp", 361);
1209 |
1210 | builder.add("semantix", "udp", 361);
1211 |
1212 | builder.add("srssend", "tcp", 362);
1213 |
1214 | builder.add("srssend", "udp", 362);
1215 |
1216 | builder.add("rsvp_tunnel", "tcp", 363);
1217 |
1218 | builder.add("rsvp_tunnel", "udp", 363);
1219 |
1220 | builder.add("aurora-cmgr", "tcp", 364);
1221 |
1222 | builder.add("aurora-cmgr", "udp", 364);
1223 |
1224 | builder.add("dtk", "tcp", 365);
1225 |
1226 | builder.add("dtk", "udp", 365);
1227 |
1228 | builder.add("odmr", "tcp", 366);
1229 |
1230 | builder.add("odmr", "udp", 366);
1231 |
1232 | builder.add("mortgageware", "tcp", 367);
1233 |
1234 | builder.add("mortgageware", "udp", 367);
1235 |
1236 | builder.add("qbikgdp", "tcp", 368);
1237 |
1238 | builder.add("qbikgdp", "udp", 368);
1239 |
1240 | builder.add("rpc2portmap", "tcp", 369);
1241 |
1242 | builder.add("rpc2portmap", "udp", 369);
1243 |
1244 | builder.add("codaauth2", "tcp", 370);
1245 |
1246 | builder.add("codaauth2", "udp", 370);
1247 |
1248 | builder.add("clearcase", "tcp", 371);
1249 |
1250 | builder.add("clearcase", "udp", 371);
1251 |
1252 | builder.add("ulistproc", "tcp", 372);
1253 |
1254 | builder.add("ulistproc", "udp", 372);
1255 |
1256 | builder.add("legent-1", "tcp", 373);
1257 |
1258 | builder.add("legent-1", "udp", 373);
1259 |
1260 | builder.add("legent-2", "tcp", 374);
1261 |
1262 | builder.add("legent-2", "udp", 374);
1263 |
1264 | builder.add("hassle", "tcp", 375);
1265 |
1266 | builder.add("hassle", "udp", 375);
1267 |
1268 | builder.add("nip", "tcp", 376);
1269 |
1270 | builder.add("nip", "udp", 376);
1271 |
1272 | builder.add("tnETOS", "tcp", 377);
1273 |
1274 | builder.add("tnETOS", "udp", 377);
1275 |
1276 | builder.add("dsETOS", "tcp", 378);
1277 |
1278 | builder.add("dsETOS", "udp", 378);
1279 |
1280 | builder.add("is99c", "tcp", 379);
1281 |
1282 | builder.add("is99c", "udp", 379);
1283 |
1284 | builder.add("is99s", "tcp", 380);
1285 |
1286 | builder.add("is99s", "udp", 380);
1287 |
1288 | builder.add("hp-collector", "tcp", 381);
1289 |
1290 | builder.add("hp-collector", "udp", 381);
1291 |
1292 | builder.add("hp-managed-node", "tcp", 382);
1293 |
1294 | builder.add("hp-managed-node", "udp", 382);
1295 |
1296 | builder.add("hp-alarm-mgr", "tcp", 383);
1297 |
1298 | builder.add("hp-alarm-mgr", "udp", 383);
1299 |
1300 | builder.add("arns", "tcp", 384);
1301 |
1302 | builder.add("arns", "udp", 384);
1303 |
1304 | builder.add("ibm-app", "tcp", 385);
1305 |
1306 | builder.add("ibm-app", "udp", 385);
1307 |
1308 | builder.add("asa", "tcp", 386);
1309 |
1310 | builder.add("asa", "udp", 386);
1311 |
1312 | builder.add("aurp", "tcp", 387);
1313 |
1314 | builder.add("aurp", "udp", 387);
1315 |
1316 | builder.add("unidata-ldm", "tcp", 388);
1317 |
1318 | builder.add("unidata-ldm", "udp", 388);
1319 |
1320 | builder.add("ldap", "tcp", 389);
1321 |
1322 | builder.add("ldap", "udp", 389);
1323 |
1324 | builder.add("uis", "tcp", 390);
1325 |
1326 | builder.add("uis", "udp", 390);
1327 |
1328 | builder.add("synotics-relay", "tcp", 391);
1329 |
1330 | builder.add("synotics-relay", "udp", 391);
1331 |
1332 | builder.add("synotics-broker", "tcp", 392);
1333 |
1334 | builder.add("synotics-broker", "udp", 392);
1335 |
1336 | builder.add("meta5", "tcp", 393);
1337 |
1338 | builder.add("meta5", "udp", 393);
1339 |
1340 | builder.add("embl-ndt", "tcp", 394);
1341 |
1342 | builder.add("embl-ndt", "udp", 394);
1343 |
1344 | builder.add("netcp", "tcp", 395);
1345 |
1346 | builder.add("netcp", "udp", 395);
1347 |
1348 | builder.add("netware-ip", "tcp", 396);
1349 |
1350 | builder.add("netware-ip", "udp", 396);
1351 |
1352 | builder.add("mptn", "tcp", 397);
1353 |
1354 | builder.add("mptn", "udp", 397);
1355 |
1356 | builder.add("kryptolan", "tcp", 398);
1357 |
1358 | builder.add("kryptolan", "udp", 398);
1359 |
1360 | builder.add("iso-tsap-c2", "tcp", 399);
1361 |
1362 | builder.add("iso-tsap-c2", "udp", 399);
1363 |
1364 | builder.add("work-sol", "tcp", 400);
1365 |
1366 | builder.add("work-sol", "udp", 400);
1367 |
1368 | builder.add("ups", "tcp", 401);
1369 |
1370 | builder.add("ups", "udp", 401);
1371 |
1372 | builder.add("genie", "tcp", 402);
1373 |
1374 | builder.add("genie", "udp", 402);
1375 |
1376 | builder.add("decap", "tcp", 403);
1377 |
1378 | builder.add("decap", "udp", 403);
1379 |
1380 | builder.add("nced", "tcp", 404);
1381 |
1382 | builder.add("nced", "udp", 404);
1383 |
1384 | builder.add("ncld", "tcp", 405);
1385 |
1386 | builder.add("ncld", "udp", 405);
1387 |
1388 | builder.add("imsp", "tcp", 406);
1389 |
1390 | builder.add("imsp", "udp", 406);
1391 |
1392 | builder.add("timbuktu", "tcp", 407);
1393 |
1394 | builder.add("timbuktu", "udp", 407);
1395 |
1396 | builder.add("prm-sm", "tcp", 408);
1397 |
1398 | builder.add("prm-sm", "udp", 408);
1399 |
1400 | builder.add("prm-nm", "tcp", 409);
1401 |
1402 | builder.add("prm-nm", "udp", 409);
1403 |
1404 | builder.add("decladebug", "tcp", 410);
1405 |
1406 | builder.add("decladebug", "udp", 410);
1407 |
1408 | builder.add("rmt", "tcp", 411);
1409 |
1410 | builder.add("rmt", "udp", 411);
1411 |
1412 | builder.add("synoptics-trap", "tcp", 412);
1413 |
1414 | builder.add("synoptics-trap", "udp", 412);
1415 |
1416 | builder.add("smsp", "tcp", 413);
1417 |
1418 | builder.add("smsp", "udp", 413);
1419 |
1420 | builder.add("infoseek", "tcp", 414);
1421 |
1422 | builder.add("infoseek", "udp", 414);
1423 |
1424 | builder.add("bnet", "tcp", 415);
1425 |
1426 | builder.add("bnet", "udp", 415);
1427 |
1428 | builder.add("silverplatter", "tcp", 416);
1429 |
1430 | builder.add("silverplatter", "udp", 416);
1431 |
1432 | builder.add("onmux", "tcp", 417);
1433 |
1434 | builder.add("onmux", "udp", 417);
1435 |
1436 | builder.add("hyper-g", "tcp", 418);
1437 |
1438 | builder.add("hyper-g", "udp", 418);
1439 |
1440 | builder.add("ariel1", "tcp", 419);
1441 |
1442 | builder.add("ariel1", "udp", 419);
1443 |
1444 | builder.add("smpte", "tcp", 420);
1445 |
1446 | builder.add("smpte", "udp", 420);
1447 |
1448 | builder.add("ariel2", "tcp", 421);
1449 |
1450 | builder.add("ariel2", "udp", 421);
1451 |
1452 | builder.add("ariel3", "tcp", 422);
1453 |
1454 | builder.add("ariel3", "udp", 422);
1455 |
1456 | builder.add("opc-job-start", "tcp", 423);
1457 |
1458 | builder.add("opc-job-start", "udp", 423);
1459 |
1460 | builder.add("opc-job-track", "tcp", 424);
1461 |
1462 | builder.add("opc-job-track", "udp", 424);
1463 |
1464 | builder.add("icad-el", "tcp", 425);
1465 |
1466 | builder.add("icad-el", "udp", 425);
1467 |
1468 | builder.add("smartsdp", "tcp", 426);
1469 |
1470 | builder.add("smartsdp", "udp", 426);
1471 |
1472 | builder.add("svrloc", "tcp", 427);
1473 |
1474 | builder.add("svrloc", "udp", 427);
1475 |
1476 | builder.add("ocs_cmu", "tcp", 428);
1477 |
1478 | builder.add("ocs_cmu", "udp", 428);
1479 |
1480 | builder.add("ocs_amu", "tcp", 429);
1481 |
1482 | builder.add("ocs_amu", "udp", 429);
1483 |
1484 | builder.add("utmpsd", "tcp", 430);
1485 |
1486 | builder.add("utmpsd", "udp", 430);
1487 |
1488 | builder.add("utmpcd", "tcp", 431);
1489 |
1490 | builder.add("utmpcd", "udp", 431);
1491 |
1492 | builder.add("iasd", "tcp", 432);
1493 |
1494 | builder.add("iasd", "udp", 432);
1495 |
1496 | builder.add("nnsp", "tcp", 433);
1497 |
1498 | builder.add("nnsp", "udp", 433);
1499 |
1500 | builder.add("mobileip-agent", "tcp", 434);
1501 |
1502 | builder.add("mobileip-agent", "udp", 434);
1503 |
1504 | builder.add("mobilip-mn", "tcp", 435);
1505 |
1506 | builder.add("mobilip-mn", "udp", 435);
1507 |
1508 | builder.add("dna-cml", "tcp", 436);
1509 |
1510 | builder.add("dna-cml", "udp", 436);
1511 |
1512 | builder.add("comscm", "tcp", 437);
1513 |
1514 | builder.add("comscm", "udp", 437);
1515 |
1516 | builder.add("dsfgw", "tcp", 438);
1517 |
1518 | builder.add("dsfgw", "udp", 438);
1519 |
1520 | builder.add("dasp", "tcp", 439);
1521 |
1522 | builder.add("dasp", "udp", 439);
1523 |
1524 | builder.add("sgcp", "tcp", 440);
1525 |
1526 | builder.add("sgcp", "udp", 440);
1527 |
1528 | builder.add("decvms-sysmgt", "tcp", 441);
1529 |
1530 | builder.add("decvms-sysmgt", "udp", 441);
1531 |
1532 | builder.add("cvc_hostd", "tcp", 442);
1533 |
1534 | builder.add("cvc_hostd", "udp", 442);
1535 |
1536 | builder.add("https", "tcp", 443);
1537 |
1538 | builder.add("https", "udp", 443);
1539 |
1540 | builder.add("https/sctp", 443);
1541 |
1542 | builder.add("snpp", "tcp", 444);
1543 |
1544 | builder.add("snpp", "udp", 444);
1545 |
1546 | builder.add("microsoft-ds", "tcp", 445);
1547 |
1548 | builder.add("microsoft-ds", "udp", 445);
1549 |
1550 | builder.add("ddm-rdb", "tcp", 446);
1551 |
1552 | builder.add("ddm-rdb", "udp", 446);
1553 |
1554 | builder.add("ddm-dfm", "tcp", 447);
1555 |
1556 | builder.add("ddm-dfm", "udp", 447);
1557 |
1558 | builder.add("ddm-ssl", "tcp", 448);
1559 |
1560 | builder.add("ddm-ssl", "udp", 448);
1561 |
1562 | builder.add("as-servermap", "tcp", 449);
1563 |
1564 | builder.add("as-servermap", "udp", 449);
1565 |
1566 | builder.add("tserver", "tcp", 450);
1567 |
1568 | builder.add("tserver", "udp", 450);
1569 |
1570 | builder.add("sfs-smp-net", "tcp", 451);
1571 |
1572 | builder.add("sfs-smp-net", "udp", 451);
1573 |
1574 | builder.add("sfs-config", "tcp", 452);
1575 |
1576 | builder.add("sfs-config", "udp", 452);
1577 |
1578 | builder.add("creativeserver", "tcp", 453);
1579 |
1580 | builder.add("creativeserver", "udp", 453);
1581 |
1582 | builder.add("contentserver", "tcp", 454);
1583 |
1584 | builder.add("contentserver", "udp", 454);
1585 |
1586 | builder.add("creativepartnr", "tcp", 455);
1587 |
1588 | builder.add("creativepartnr", "udp", 455);
1589 |
1590 | builder.add("macon-tcp", "tcp", 456);
1591 |
1592 | builder.add("macon-udp", "udp", 456);
1593 |
1594 | builder.add("scohelp", "tcp", 457);
1595 |
1596 | builder.add("scohelp", "udp", 457);
1597 |
1598 | builder.add("appleqtc", "tcp", 458);
1599 |
1600 | builder.add("appleqtc", "udp", 458);
1601 |
1602 | builder.add("ampr-rcmd", "tcp", 459);
1603 |
1604 | builder.add("ampr-rcmd", "udp", 459);
1605 |
1606 | builder.add("skronk", "tcp", 460);
1607 |
1608 | builder.add("skronk", "udp", 460);
1609 |
1610 | builder.add("datasurfsrv", "tcp", 461);
1611 |
1612 | builder.add("datasurfsrv", "udp", 461);
1613 |
1614 | builder.add("datasurfsrvsec", "tcp", 462);
1615 |
1616 | builder.add("datasurfsrvsec", "udp", 462);
1617 |
1618 | builder.add("alpes", "tcp", 463);
1619 |
1620 | builder.add("alpes", "udp", 463);
1621 |
1622 | builder.add("kpasswd", "tcp", 464);
1623 |
1624 | builder.add("kpasswd", "udp", 464);
1625 |
1626 | builder.add("urd", "tcp", 465);
1627 |
1628 | builder.add("igmpv3lite", "udp", 465);
1629 |
1630 | builder.add("digital-vrc", "tcp", 466);
1631 |
1632 | builder.add("digital-vrc", "udp", 466);
1633 |
1634 | builder.add("mylex-mapd", "tcp", 467);
1635 |
1636 | builder.add("mylex-mapd", "udp", 467);
1637 |
1638 | builder.add("photuris", "tcp", 468);
1639 |
1640 | builder.add("photuris", "udp", 468);
1641 |
1642 | builder.add("rcp", "tcp", 469);
1643 |
1644 | builder.add("rcp", "udp", 469);
1645 |
1646 | builder.add("scx-proxy", "tcp", 470);
1647 |
1648 | builder.add("scx-proxy", "udp", 470);
1649 |
1650 | builder.add("mondex", "tcp", 471);
1651 |
1652 | builder.add("mondex", "udp", 471);
1653 |
1654 | builder.add("ljk-login", "tcp", 472);
1655 |
1656 | builder.add("ljk-login", "udp", 472);
1657 |
1658 | builder.add("hybrid-pop", "tcp", 473);
1659 |
1660 | builder.add("hybrid-pop", "udp", 473);
1661 |
1662 | builder.add("tn-tl-w1", "tcp", 474);
1663 |
1664 | builder.add("tn-tl-w2", "udp", 474);
1665 |
1666 | builder.add("tcpnethaspsrv", "tcp", 475);
1667 |
1668 | builder.add("tcpnethaspsrv", "udp", 475);
1669 |
1670 | builder.add("tn-tl-fd1", "tcp", 476);
1671 |
1672 | builder.add("tn-tl-fd1", "udp", 476);
1673 |
1674 | builder.add("ss7ns", "tcp", 477);
1675 |
1676 | builder.add("ss7ns", "udp", 477);
1677 |
1678 | builder.add("spsc", "tcp", 478);
1679 |
1680 | builder.add("spsc", "udp", 478);
1681 |
1682 | builder.add("iafserver", "tcp", 479);
1683 |
1684 | builder.add("iafserver", "udp", 479);
1685 |
1686 | builder.add("iafdbase", "tcp", 480);
1687 |
1688 | builder.add("iafdbase", "udp", 480);
1689 |
1690 | builder.add("ph", "tcp", 481);
1691 |
1692 | builder.add("ph", "udp", 481);
1693 |
1694 | builder.add("bgs-nsi", "tcp", 482);
1695 |
1696 | builder.add("bgs-nsi", "udp", 482);
1697 |
1698 | builder.add("ulpnet", "tcp", 483);
1699 |
1700 | builder.add("ulpnet", "udp", 483);
1701 |
1702 | builder.add("integra-sme", "tcp", 484);
1703 |
1704 | builder.add("integra-sme", "udp", 484);
1705 |
1706 | builder.add("powerburst", "tcp", 485);
1707 |
1708 | builder.add("powerburst", "udp", 485);
1709 |
1710 | builder.add("avian", "tcp", 486);
1711 |
1712 | builder.add("avian", "udp", 486);
1713 |
1714 | builder.add("saft", "tcp", 487);
1715 |
1716 | builder.add("saft", "udp", 487);
1717 |
1718 | builder.add("gss-http", "tcp", 488);
1719 |
1720 | builder.add("gss-http", "udp", 488);
1721 |
1722 | builder.add("nest-protocol", "tcp", 489);
1723 |
1724 | builder.add("nest-protocol", "udp", 489);
1725 |
1726 | builder.add("micom-pfs", "tcp", 490);
1727 |
1728 | builder.add("micom-pfs", "udp", 490);
1729 |
1730 | builder.add("go-login", "tcp", 491);
1731 |
1732 | builder.add("go-login", "udp", 491);
1733 |
1734 | builder.add("ticf-1", "tcp", 492);
1735 |
1736 | builder.add("ticf-1", "udp", 492);
1737 |
1738 | builder.add("ticf-2", "tcp", 493);
1739 |
1740 | builder.add("ticf-2", "udp", 493);
1741 |
1742 | builder.add("pov-ray", "tcp", 494);
1743 |
1744 | builder.add("pov-ray", "udp", 494);
1745 |
1746 | builder.add("intecourier", "tcp", 495);
1747 |
1748 | builder.add("intecourier", "udp", 495);
1749 |
1750 | builder.add("pim-rp-disc", "tcp", 496);
1751 |
1752 | builder.add("pim-rp-disc", "udp", 496);
1753 |
1754 | builder.add("dantz", "tcp", 497);
1755 |
1756 | builder.add("dantz", "udp", 497);
1757 |
1758 | builder.add("siam", "tcp", 498);
1759 |
1760 | builder.add("siam", "udp", 498);
1761 |
1762 | builder.add("iso-ill", "tcp", 499);
1763 |
1764 | builder.add("iso-ill", "udp", 499);
1765 |
1766 | builder.add("isakmp", "tcp", 500);
1767 |
1768 | builder.add("isakmp", "udp", 500);
1769 |
1770 | builder.add("stmf", "tcp", 501);
1771 |
1772 | builder.add("stmf", "udp", 501);
1773 |
1774 | builder.add("asa-appl-proto", "tcp", 502);
1775 |
1776 | builder.add("asa-appl-proto", "udp", 502);
1777 |
1778 | builder.add("intrinsa", "tcp", 503);
1779 |
1780 | builder.add("intrinsa", "udp", 503);
1781 |
1782 | builder.add("citadel", "tcp", 504);
1783 |
1784 | builder.add("citadel", "udp", 504);
1785 |
1786 | builder.add("mailbox-lm", "tcp", 505);
1787 |
1788 | builder.add("mailbox-lm", "udp", 505);
1789 |
1790 | builder.add("ohimsrv", "tcp", 506);
1791 |
1792 | builder.add("ohimsrv", "udp", 506);
1793 |
1794 | builder.add("crs", "tcp", 507);
1795 |
1796 | builder.add("crs", "udp", 507);
1797 |
1798 | builder.add("xvttp", "tcp", 508);
1799 |
1800 | builder.add("xvttp", "udp", 508);
1801 |
1802 | builder.add("snare", "tcp", 509);
1803 |
1804 | builder.add("snare", "udp", 509);
1805 |
1806 | builder.add("fcp", "tcp", 510);
1807 |
1808 | builder.add("fcp", "udp", 510);
1809 |
1810 | builder.add("passgo", "tcp", 511);
1811 |
1812 | builder.add("passgo", "udp", 511);
1813 |
1814 | builder.add("exec", "tcp", 512);
1815 |
1816 | builder.add("comsat", "udp", 512);
1817 |
1818 | builder.add("biff", "udp", 512);
1819 |
1820 | builder.add("login", "tcp", 513);
1821 |
1822 | builder.add("who", "udp", 513);
1823 |
1824 | builder.add("shell", "tcp", 514);
1825 |
1826 | builder.add("syslog", "udp", 514);
1827 |
1828 | builder.add("printer", "tcp", 515);
1829 |
1830 | builder.add("printer", "udp", 515);
1831 |
1832 | builder.add("videotex", "tcp", 516);
1833 |
1834 | builder.add("videotex", "udp", 516);
1835 |
1836 | builder.add("talk", "tcp", 517);
1837 |
1838 | builder.add("talk", "udp", 517);
1839 |
1840 | builder.add("ntalk", "tcp", 518);
1841 |
1842 | builder.add("ntalk", "udp", 518);
1843 |
1844 | builder.add("utime", "tcp", 519);
1845 |
1846 | builder.add("utime", "udp", 519);
1847 |
1848 | builder.add("efs", "tcp", 520);
1849 |
1850 | builder.add("router", "udp", 520);
1851 |
1852 | builder.add("ripng", "tcp", 521);
1853 |
1854 | builder.add("ripng", "udp", 521);
1855 |
1856 | builder.add("ulp", "tcp", 522);
1857 |
1858 | builder.add("ulp", "udp", 522);
1859 |
1860 | builder.add("ibm-db2", "tcp", 523);
1861 |
1862 | builder.add("ibm-db2", "udp", 523);
1863 |
1864 | builder.add("ncp", "tcp", 524);
1865 |
1866 | builder.add("ncp", "udp", 524);
1867 |
1868 | builder.add("timed", "tcp", 525);
1869 |
1870 | builder.add("timed", "udp", 525);
1871 |
1872 | builder.add("tempo", "tcp", 526);
1873 |
1874 | builder.add("tempo", "udp", 526);
1875 |
1876 | builder.add("stx", "tcp", 527);
1877 |
1878 | builder.add("stx", "udp", 527);
1879 |
1880 | builder.add("custix", "tcp", 528);
1881 |
1882 | builder.add("custix", "udp", 528);
1883 |
1884 | builder.add("irc-serv", "tcp", 529);
1885 |
1886 | builder.add("irc-serv", "udp", 529);
1887 |
1888 | builder.add("courier", "tcp", 530);
1889 |
1890 | builder.add("courier", "udp", 530);
1891 |
1892 | builder.add("conference", "tcp", 531);
1893 |
1894 | builder.add("conference", "udp", 531);
1895 |
1896 | builder.add("netnews", "tcp", 532);
1897 |
1898 | builder.add("netnews", "udp", 532);
1899 |
1900 | builder.add("netwall", "tcp", 533);
1901 |
1902 | builder.add("netwall", "udp", 533);
1903 |
1904 | builder.add("windream", "tcp", 534);
1905 |
1906 | builder.add("windream", "udp", 534);
1907 |
1908 | builder.add("iiop", "tcp", 535);
1909 |
1910 | builder.add("iiop", "udp", 535);
1911 |
1912 | builder.add("opalis-rdv", "tcp", 536);
1913 |
1914 | builder.add("opalis-rdv", "udp", 536);
1915 |
1916 | builder.add("nmsp", "tcp", 537);
1917 |
1918 | builder.add("nmsp", "udp", 537);
1919 |
1920 | builder.add("gdomap", "tcp", 538);
1921 |
1922 | builder.add("gdomap", "udp", 538);
1923 |
1924 | builder.add("apertus-ldp", "tcp", 539);
1925 |
1926 | builder.add("apertus-ldp", "udp", 539);
1927 |
1928 | builder.add("uucp", "tcp", 540);
1929 |
1930 | builder.add("uucp", "udp", 540);
1931 |
1932 | builder.add("uucp-rlogin", "tcp", 541);
1933 |
1934 | builder.add("uucp-rlogin", "udp", 541);
1935 |
1936 | builder.add("commerce", "tcp", 542);
1937 |
1938 | builder.add("commerce", "udp", 542);
1939 |
1940 | builder.add("klogin", "tcp", 543);
1941 |
1942 | builder.add("klogin", "udp", 543);
1943 |
1944 | builder.add("kshell", "tcp", 544);
1945 |
1946 | builder.add("kshell", "udp", 544);
1947 |
1948 | builder.add("appleqtcsrvr", "tcp", 545);
1949 |
1950 | builder.add("appleqtcsrvr", "udp", 545);
1951 |
1952 | builder.add("dhcpv6-client", "tcp", 546);
1953 |
1954 | builder.add("dhcpv6-client", "udp", 546);
1955 |
1956 | builder.add("dhcpv6-server", "tcp", 547);
1957 |
1958 | builder.add("dhcpv6-server", "udp", 547);
1959 |
1960 | builder.add("afpovertcp", "tcp", 548);
1961 |
1962 | builder.add("afpovertcp", "udp", 548);
1963 |
1964 | builder.add("idfp", "tcp", 549);
1965 |
1966 | builder.add("idfp", "udp", 549);
1967 |
1968 | builder.add("new-rwho", "tcp", 550);
1969 |
1970 | builder.add("new-rwho", "udp", 550);
1971 |
1972 | builder.add("cybercash", "tcp", 551);
1973 |
1974 | builder.add("cybercash", "udp", 551);
1975 |
1976 | builder.add("devshr-nts", "tcp", 552);
1977 |
1978 | builder.add("devshr-nts", "udp", 552);
1979 |
1980 | builder.add("pirp", "tcp", 553);
1981 |
1982 | builder.add("pirp", "udp", 553);
1983 |
1984 | builder.add("rtsp", "tcp", 554);
1985 |
1986 | builder.add("rtsp", "udp", 554);
1987 |
1988 | builder.add("dsf", "tcp", 555);
1989 |
1990 | builder.add("dsf", "udp", 555);
1991 |
1992 | builder.add("remotefs", "tcp", 556);
1993 |
1994 | builder.add("remotefs", "udp", 556);
1995 |
1996 | builder.add("openvms-sysipc", "tcp", 557);
1997 |
1998 | builder.add("openvms-sysipc", "udp", 557);
1999 |
2000 | builder.add("sdnskmp", "tcp", 558);
2001 |
2002 | builder.add("sdnskmp", "udp", 558);
2003 |
2004 | builder.add("teedtap", "tcp", 559);
2005 |
2006 | builder.add("teedtap", "udp", 559);
2007 |
2008 | builder.add("rmonitor", "tcp", 560);
2009 |
2010 | builder.add("rmonitor", "udp", 560);
2011 |
2012 | builder.add("monitor", "tcp", 561);
2013 |
2014 | builder.add("monitor", "udp", 561);
2015 |
2016 | builder.add("chshell", "tcp", 562);
2017 |
2018 | builder.add("chshell", "udp", 562);
2019 |
2020 | builder.add("nntps", "tcp", 563);
2021 |
2022 | builder.add("nntps", "udp", 563);
2023 |
2024 | builder.add("9pfs", "tcp", 564);
2025 |
2026 | builder.add("9pfs", "udp", 564);
2027 |
2028 | builder.add("whoami", "tcp", 565);
2029 |
2030 | builder.add("whoami", "udp", 565);
2031 |
2032 | builder.add("streettalk", "tcp", 566);
2033 |
2034 | builder.add("streettalk", "udp", 566);
2035 |
2036 | builder.add("banyan-rpc", "tcp", 567);
2037 |
2038 | builder.add("banyan-rpc", "udp", 567);
2039 |
2040 | builder.add("ms-shuttle", "tcp", 568);
2041 |
2042 | builder.add("ms-shuttle", "udp", 568);
2043 |
2044 | builder.add("ms-rome", "tcp", 569);
2045 |
2046 | builder.add("ms-rome", "udp", 569);
2047 |
2048 | builder.add("meter", "tcp", 570);
2049 |
2050 | builder.add("meter", "udp", 570);
2051 |
2052 | builder.add("meter", "tcp", 571);
2053 |
2054 | builder.add("meter", "udp", 571);
2055 |
2056 | builder.add("sonar", "tcp", 572);
2057 |
2058 | builder.add("sonar", "udp", 572);
2059 |
2060 | builder.add("banyan-vip", "tcp", 573);
2061 |
2062 | builder.add("banyan-vip", "udp", 573);
2063 |
2064 | builder.add("ftp-agent", "tcp", 574);
2065 |
2066 | builder.add("ftp-agent", "udp", 574);
2067 |
2068 | builder.add("vemmi", "tcp", 575);
2069 |
2070 | builder.add("vemmi", "udp", 575);
2071 |
2072 | builder.add("ipcd", "tcp", 576);
2073 |
2074 | builder.add("ipcd", "udp", 576);
2075 |
2076 | builder.add("vnas", "tcp", 577);
2077 |
2078 | builder.add("vnas", "udp", 577);
2079 |
2080 | builder.add("ipdd", "tcp", 578);
2081 |
2082 | builder.add("ipdd", "udp", 578);
2083 |
2084 | builder.add("decbsrv", "tcp", 579);
2085 |
2086 | builder.add("decbsrv", "udp", 579);
2087 |
2088 | builder.add("sntp-heartbeat", "tcp", 580);
2089 |
2090 | builder.add("sntp-heartbeat", "udp", 580);
2091 |
2092 | builder.add("bdp", "tcp", 581);
2093 |
2094 | builder.add("bdp", "udp", 581);
2095 |
2096 | builder.add("scc-security", "tcp", 582);
2097 |
2098 | builder.add("scc-security", "udp", 582);
2099 |
2100 | builder.add("philips-vc", "tcp", 583);
2101 |
2102 | builder.add("philips-vc", "udp", 583);
2103 |
2104 | builder.add("keyserver", "tcp", 584);
2105 |
2106 | builder.add("keyserver", "udp", 584);
2107 |
2108 | builder.add("password-chg", "tcp", 586);
2109 |
2110 | builder.add("password-chg", "udp", 586);
2111 |
2112 | builder.add("submission", "tcp", 587);
2113 |
2114 | builder.add("submission", "udp", 587);
2115 |
2116 | builder.add("cal", "tcp", 588);
2117 |
2118 | builder.add("cal", "udp", 588);
2119 |
2120 | builder.add("eyelink", "tcp", 589);
2121 |
2122 | builder.add("eyelink", "udp", 589);
2123 |
2124 | builder.add("tns-cml", "tcp", 590);
2125 |
2126 | builder.add("tns-cml", "udp", 590);
2127 |
2128 | builder.add("http-alt", "tcp", 591);
2129 |
2130 | builder.add("http-alt", "udp", 591);
2131 |
2132 | builder.add("eudora-set", "tcp", 592);
2133 |
2134 | builder.add("eudora-set", "udp", 592);
2135 |
2136 | builder.add("http-rpc-epmap", "tcp", 593);
2137 |
2138 | builder.add("http-rpc-epmap", "udp", 593);
2139 |
2140 | builder.add("tpip", "tcp", 594);
2141 |
2142 | builder.add("tpip", "udp", 594);
2143 |
2144 | builder.add("cab-protocol", "tcp", 595);
2145 |
2146 | builder.add("cab-protocol", "udp", 595);
2147 |
2148 | builder.add("smsd", "tcp", 596);
2149 |
2150 | builder.add("smsd", "udp", 596);
2151 |
2152 | builder.add("ptcnameservice", "tcp", 597);
2153 |
2154 | builder.add("ptcnameservice", "udp", 597);
2155 |
2156 | builder.add("sco-websrvrmg3", "tcp", 598);
2157 |
2158 | builder.add("sco-websrvrmg3", "udp", 598);
2159 |
2160 | builder.add("acp", "tcp", 599);
2161 |
2162 | builder.add("acp", "udp", 599);
2163 |
2164 | builder.add("ipcserver", "tcp", 600);
2165 |
2166 | builder.add("ipcserver", "udp", 600);
2167 |
2168 | builder.add("syslog-conn", "tcp", 601);
2169 |
2170 | builder.add("syslog-conn", "udp", 601);
2171 |
2172 | builder.add("xmlrpc-beep", "tcp", 602);
2173 |
2174 | builder.add("xmlrpc-beep", "udp", 602);
2175 |
2176 | builder.add("idxp", "tcp", 603);
2177 |
2178 | builder.add("idxp", "udp", 603);
2179 |
2180 | builder.add("tunnel", "tcp", 604);
2181 |
2182 | builder.add("tunnel", "udp", 604);
2183 |
2184 | builder.add("soap-beep", "tcp", 605);
2185 |
2186 | builder.add("soap-beep", "udp", 605);
2187 |
2188 | builder.add("urm", "tcp", 606);
2189 |
2190 | builder.add("urm", "udp", 606);
2191 |
2192 | builder.add("nqs", "tcp", 607);
2193 |
2194 | builder.add("nqs", "udp", 607);
2195 |
2196 | builder.add("sift-uft", "tcp", 608);
2197 |
2198 | builder.add("sift-uft", "udp", 608);
2199 |
2200 | builder.add("npmp-trap", "tcp", 609);
2201 |
2202 | builder.add("npmp-trap", "udp", 609);
2203 |
2204 | builder.add("npmp-local", "tcp", 610);
2205 |
2206 | builder.add("npmp-local", "udp", 610);
2207 |
2208 | builder.add("npmp-gui", "tcp", 611);
2209 |
2210 | builder.add("npmp-gui", "udp", 611);
2211 |
2212 | builder.add("hmmp-ind", "tcp", 612);
2213 |
2214 | builder.add("hmmp-ind", "udp", 612);
2215 |
2216 | builder.add("hmmp-op", "tcp", 613);
2217 |
2218 | builder.add("hmmp-op", "udp", 613);
2219 |
2220 | builder.add("sshell", "tcp", 614);
2221 |
2222 | builder.add("sshell", "udp", 614);
2223 |
2224 | builder.add("sco-inetmgr", "tcp", 615);
2225 |
2226 | builder.add("sco-inetmgr", "udp", 615);
2227 |
2228 | builder.add("sco-sysmgr", "tcp", 616);
2229 |
2230 | builder.add("sco-sysmgr", "udp", 616);
2231 |
2232 | builder.add("sco-dtmgr", "tcp", 617);
2233 |
2234 | builder.add("sco-dtmgr", "udp", 617);
2235 |
2236 | builder.add("dei-icda", "tcp", 618);
2237 |
2238 | builder.add("dei-icda", "udp", 618);
2239 |
2240 | builder.add("compaq-evm", "tcp", 619);
2241 |
2242 | builder.add("compaq-evm", "udp", 619);
2243 |
2244 | builder.add("sco-websrvrmgr", "tcp", 620);
2245 |
2246 | builder.add("sco-websrvrmgr", "udp", 620);
2247 |
2248 | builder.add("escp-ip", "tcp", 621);
2249 |
2250 | builder.add("escp-ip", "udp", 621);
2251 |
2252 | builder.add("collaborator", "tcp", 622);
2253 |
2254 | builder.add("collaborator", "udp", 622);
2255 |
2256 | builder.add("oob-ws-http", "tcp", 623);
2257 |
2258 | builder.add("asf-rmcp", "udp", 623);
2259 |
2260 | builder.add("cryptoadmin", "tcp", 624);
2261 |
2262 | builder.add("cryptoadmin", "udp", 624);
2263 |
2264 | builder.add("dec_dlm", "tcp", 625);
2265 |
2266 | builder.add("dec_dlm", "udp", 625);
2267 |
2268 | builder.add("asia", "tcp", 626);
2269 |
2270 | builder.add("asia", "udp", 626);
2271 |
2272 | builder.add("passgo-tivoli", "tcp", 627);
2273 |
2274 | builder.add("passgo-tivoli", "udp", 627);
2275 |
2276 | builder.add("qmqp", "tcp", 628);
2277 |
2278 | builder.add("qmqp", "udp", 628);
2279 |
2280 | builder.add("3com-amp3", "tcp", 629);
2281 |
2282 | builder.add("3com-amp3", "udp", 629);
2283 |
2284 | builder.add("rda", "tcp", 630);
2285 |
2286 | builder.add("rda", "udp", 630);
2287 |
2288 | builder.add("ipp", "tcp", 631);
2289 |
2290 | builder.add("ipp", "udp", 631);
2291 |
2292 | builder.add("bmpp", "tcp", 632);
2293 |
2294 | builder.add("bmpp", "udp", 632);
2295 |
2296 | builder.add("servstat", "tcp", 633);
2297 |
2298 | builder.add("servstat", "udp", 633);
2299 |
2300 | builder.add("ginad", "tcp", 634);
2301 |
2302 | builder.add("ginad", "udp", 634);
2303 |
2304 | builder.add("rlzdbase", "tcp", 635);
2305 |
2306 | builder.add("rlzdbase", "udp", 635);
2307 |
2308 | builder.add("ldaps", "tcp", 636);
2309 |
2310 | builder.add("ldaps", "udp", 636);
2311 |
2312 | builder.add("lanserver", "tcp", 637);
2313 |
2314 | builder.add("lanserver", "udp", 637);
2315 |
2316 | builder.add("mcns-sec", "tcp", 638);
2317 |
2318 | builder.add("mcns-sec", "udp", 638);
2319 |
2320 | builder.add("msdp", "tcp", 639);
2321 |
2322 | builder.add("msdp", "udp", 639);
2323 |
2324 | builder.add("entrust-sps", "tcp", 640);
2325 |
2326 | builder.add("entrust-sps", "udp", 640);
2327 |
2328 | builder.add("repcmd", "tcp", 641);
2329 |
2330 | builder.add("repcmd", "udp", 641);
2331 |
2332 | builder.add("esro-emsdp", "tcp", 642);
2333 |
2334 | builder.add("esro-emsdp", "udp", 642);
2335 |
2336 | builder.add("sanity", "tcp", 643);
2337 |
2338 | builder.add("sanity", "udp", 643);
2339 |
2340 | builder.add("dwr", "tcp", 644);
2341 |
2342 | builder.add("dwr", "udp", 644);
2343 |
2344 | builder.add("pssc", "tcp", 645);
2345 |
2346 | builder.add("pssc", "udp", 645);
2347 |
2348 | builder.add("ldp", "tcp", 646);
2349 |
2350 | builder.add("ldp", "udp", 646);
2351 |
2352 | builder.add("dhcp-failover", "tcp", 647);
2353 |
2354 | builder.add("dhcp-failover", "udp", 647);
2355 |
2356 | builder.add("rrp", "tcp", 648);
2357 |
2358 | builder.add("rrp", "udp", 648);
2359 |
2360 | builder.add("cadview-3d", "tcp", 649);
2361 |
2362 | builder.add("cadview-3d", "udp", 649);
2363 |
2364 | builder.add("obex", "tcp", 650);
2365 |
2366 | builder.add("obex", "udp", 650);
2367 |
2368 | builder.add("ieee-mms", "tcp", 651);
2369 |
2370 | builder.add("ieee-mms", "udp", 651);
2371 |
2372 | builder.add("hello-port", "tcp", 652);
2373 |
2374 | builder.add("hello-port", "udp", 652);
2375 |
2376 | builder.add("repscmd", "tcp", 653);
2377 |
2378 | builder.add("repscmd", "udp", 653);
2379 |
2380 | builder.add("aodv", "tcp", 654);
2381 |
2382 | builder.add("aodv", "udp", 654);
2383 |
2384 | builder.add("tinc", "tcp", 655);
2385 |
2386 | builder.add("tinc", "udp", 655);
2387 |
2388 | builder.add("spmp", "tcp", 656);
2389 |
2390 | builder.add("spmp", "udp", 656);
2391 |
2392 | builder.add("rmc", "tcp", 657);
2393 |
2394 | builder.add("rmc", "udp", 657);
2395 |
2396 | builder.add("tenfold", "tcp", 658);
2397 |
2398 | builder.add("tenfold", "udp", 658);
2399 |
2400 | builder.add("mac-srvr-admin", "tcp", 660);
2401 |
2402 | builder.add("mac-srvr-admin", "udp", 660);
2403 |
2404 | builder.add("hap", "tcp", 661);
2405 |
2406 | builder.add("hap", "udp", 661);
2407 |
2408 | builder.add("pftp", "tcp", 662);
2409 |
2410 | builder.add("pftp", "udp", 662);
2411 |
2412 | builder.add("purenoise", "tcp", 663);
2413 |
2414 | builder.add("purenoise", "udp", 663);
2415 |
2416 | builder.add("oob-ws-https", "tcp", 664);
2417 |
2418 | builder.add("asf-secure-rmcp", "udp", 664);
2419 |
2420 | builder.add("sun-dr", "tcp", 665);
2421 |
2422 | builder.add("sun-dr", "udp", 665);
2423 |
2424 | builder.add("mdqs", "tcp", 666);
2425 |
2426 | builder.add("mdqs", "udp", 666);
2427 |
2428 | builder.add("doom", "tcp", 666);
2429 |
2430 | builder.add("doom", "udp", 666);
2431 |
2432 | builder.add("disclose", "tcp", 667);
2433 |
2434 | builder.add("disclose", "udp", 667);
2435 |
2436 | builder.add("mecomm", "tcp", 668);
2437 |
2438 | builder.add("mecomm", "udp", 668);
2439 |
2440 | builder.add("meregister", "tcp", 669);
2441 |
2442 | builder.add("meregister", "udp", 669);
2443 |
2444 | builder.add("vacdsm-sws", "tcp", 670);
2445 |
2446 | builder.add("vacdsm-sws", "udp", 670);
2447 |
2448 | builder.add("vacdsm-app", "tcp", 671);
2449 |
2450 | builder.add("vacdsm-app", "udp", 671);
2451 |
2452 | builder.add("vpps-qua", "tcp", 672);
2453 |
2454 | builder.add("vpps-qua", "udp", 672);
2455 |
2456 | builder.add("cimplex", "tcp", 673);
2457 |
2458 | builder.add("cimplex", "udp", 673);
2459 |
2460 | builder.add("acap", "tcp", 674);
2461 |
2462 | builder.add("acap", "udp", 674);
2463 |
2464 | builder.add("dctp", "tcp", 675);
2465 |
2466 | builder.add("dctp", "udp", 675);
2467 |
2468 | builder.add("vpps-via", "tcp", 676);
2469 |
2470 | builder.add("vpps-via", "udp", 676);
2471 |
2472 | builder.add("vpp", "tcp", 677);
2473 |
2474 | builder.add("vpp", "udp", 677);
2475 |
2476 | builder.add("ggf-ncp", "tcp", 678);
2477 |
2478 | builder.add("ggf-ncp", "udp", 678);
2479 |
2480 | builder.add("mrm", "tcp", 679);
2481 |
2482 | builder.add("mrm", "udp", 679);
2483 |
2484 | builder.add("entrust-aaas", "tcp", 680);
2485 |
2486 | builder.add("entrust-aaas", "udp", 680);
2487 |
2488 | builder.add("entrust-aams", "tcp", 681);
2489 |
2490 | builder.add("entrust-aams", "udp", 681);
2491 |
2492 | builder.add("xfr", "tcp", 682);
2493 |
2494 | builder.add("xfr", "udp", 682);
2495 |
2496 | builder.add("corba-iiop", "tcp", 683);
2497 |
2498 | builder.add("corba-iiop", "udp", 683);
2499 |
2500 | builder.add("corba-iiop-ssl", "tcp", 684);
2501 |
2502 | builder.add("corba-iiop-ssl", "udp", 684);
2503 |
2504 | builder.add("mdc-portmapper", "tcp", 685);
2505 |
2506 | builder.add("mdc-portmapper", "udp", 685);
2507 |
2508 | builder.add("hcp-wismar", "tcp", 686);
2509 |
2510 | builder.add("hcp-wismar", "udp", 686);
2511 |
2512 | builder.add("asipregistry", "tcp", 687);
2513 |
2514 | builder.add("asipregistry", "udp", 687);
2515 |
2516 | builder.add("realm-rusd", "tcp", 688);
2517 |
2518 | builder.add("realm-rusd", "udp", 688);
2519 |
2520 | builder.add("nmap", "tcp", 689);
2521 |
2522 | builder.add("nmap", "udp", 689);
2523 |
2524 | builder.add("vatp", "tcp", 690);
2525 |
2526 | builder.add("vatp", "udp", 690);
2527 |
2528 | builder.add("msexch-routing", "tcp", 691);
2529 |
2530 | builder.add("msexch-routing", "udp", 691);
2531 |
2532 | builder.add("hyperwave-isp", "tcp", 692);
2533 |
2534 | builder.add("hyperwave-isp", "udp", 692);
2535 |
2536 | builder.add("connendp", "tcp", 693);
2537 |
2538 | builder.add("connendp", "udp", 693);
2539 |
2540 | builder.add("ha-cluster", "tcp", 694);
2541 |
2542 | builder.add("ha-cluster", "udp", 694);
2543 |
2544 | builder.add("ieee-mms-ssl", "tcp", 695);
2545 |
2546 | builder.add("ieee-mms-ssl", "udp", 695);
2547 |
2548 | builder.add("rushd", "tcp", 696);
2549 |
2550 | builder.add("rushd", "udp", 696);
2551 |
2552 | builder.add("uuidgen", "tcp", 697);
2553 |
2554 | builder.add("uuidgen", "udp", 697);
2555 |
2556 | builder.add("olsr", "tcp", 698);
2557 |
2558 | builder.add("olsr", "udp", 698);
2559 |
2560 | builder.add("accessnetwork", "tcp", 699);
2561 |
2562 | builder.add("accessnetwork", "udp", 699);
2563 |
2564 | builder.add("epp", "tcp", 700);
2565 |
2566 | builder.add("epp", "udp", 700);
2567 |
2568 | builder.add("lmp", "tcp", 701);
2569 |
2570 | builder.add("lmp", "udp", 701);
2571 |
2572 | builder.add("iris-beep", "tcp", 702);
2573 |
2574 | builder.add("iris-beep", "udp", 702);
2575 |
2576 | builder.add("elcsd", "tcp", 704);
2577 |
2578 | builder.add("elcsd", "udp", 704);
2579 |
2580 | builder.add("agentx", "tcp", 705);
2581 |
2582 | builder.add("agentx", "udp", 705);
2583 |
2584 | builder.add("silc", "tcp", 706);
2585 |
2586 | builder.add("silc", "udp", 706);
2587 |
2588 | builder.add("borland-dsj", "tcp", 707);
2589 |
2590 | builder.add("borland-dsj", "udp", 707);
2591 |
2592 | builder.add("entrust-kmsh", "tcp", 709);
2593 |
2594 | builder.add("entrust-kmsh", "udp", 709);
2595 |
2596 | builder.add("entrust-ash", "tcp", 710);
2597 |
2598 | builder.add("entrust-ash", "udp", 710);
2599 |
2600 | builder.add("cisco-tdp", "tcp", 711);
2601 |
2602 | builder.add("cisco-tdp", "udp", 711);
2603 |
2604 | builder.add("tbrpf", "tcp", 712);
2605 |
2606 | builder.add("tbrpf", "udp", 712);
2607 |
2608 | builder.add("iris-xpc", "tcp", 713);
2609 |
2610 | builder.add("iris-xpc", "udp", 713);
2611 |
2612 | builder.add("iris-xpcs", "tcp", 714);
2613 |
2614 | builder.add("iris-xpcs", "udp", 714);
2615 |
2616 | builder.add("iris-lwz", "tcp", 715);
2617 |
2618 | builder.add("iris-lwz", "udp", 715);
2619 |
2620 | builder.add("pana", "udp", 716);
2621 |
2622 | builder.add("netviewdm1", "tcp", 729);
2623 |
2624 | builder.add("netviewdm1", "udp", 729);
2625 |
2626 | builder.add("netviewdm2", "tcp", 730);
2627 |
2628 | builder.add("netviewdm2", "udp", 730);
2629 |
2630 | builder.add("netviewdm3", "tcp", 731);
2631 |
2632 | builder.add("netviewdm3", "udp", 731);
2633 |
2634 | builder.add("netgw", "tcp", 741);
2635 |
2636 | builder.add("netgw", "udp", 741);
2637 |
2638 | builder.add("netrcs", "tcp", 742);
2639 |
2640 | builder.add("netrcs", "udp", 742);
2641 |
2642 | builder.add("flexlm", "tcp", 744);
2643 |
2644 | builder.add("flexlm", "udp", 744);
2645 |
2646 | builder.add("fujitsu-dev", "tcp", 747);
2647 |
2648 | builder.add("fujitsu-dev", "udp", 747);
2649 |
2650 | builder.add("ris-cm", "tcp", 748);
2651 |
2652 | builder.add("ris-cm", "udp", 748);
2653 |
2654 | builder.add("kerberos-adm", "tcp", 749);
2655 |
2656 | builder.add("kerberos-adm", "udp", 749);
2657 |
2658 | builder.add("rfile", "tcp", 750);
2659 |
2660 | builder.add("loadav", "udp", 750);
2661 |
2662 | builder.add("kerberos-iv", "udp", 750);
2663 |
2664 | builder.add("pump", "tcp", 751);
2665 |
2666 | builder.add("pump", "udp", 751);
2667 |
2668 | builder.add("qrh", "tcp", 752);
2669 |
2670 | builder.add("qrh", "udp", 752);
2671 |
2672 | builder.add("rrh", "tcp", 753);
2673 |
2674 | builder.add("rrh", "udp", 753);
2675 |
2676 | builder.add("tell", "tcp", 754);
2677 |
2678 | builder.add("tell", "udp", 754);
2679 |
2680 | builder.add("nlogin", "tcp", 758);
2681 |
2682 | builder.add("nlogin", "udp", 758);
2683 |
2684 | builder.add("con", "tcp", 759);
2685 |
2686 | builder.add("con", "udp", 759);
2687 |
2688 | builder.add("ns", "tcp", 760);
2689 |
2690 | builder.add("ns", "udp", 760);
2691 |
2692 | builder.add("rxe", "tcp", 761);
2693 |
2694 | builder.add("rxe", "udp", 761);
2695 |
2696 | builder.add("quotad", "tcp", 762);
2697 |
2698 | builder.add("quotad", "udp", 762);
2699 |
2700 | builder.add("cycleserv", "tcp", 763);
2701 |
2702 | builder.add("cycleserv", "udp", 763);
2703 |
2704 | builder.add("omserv", "tcp", 764);
2705 |
2706 | builder.add("omserv", "udp", 764);
2707 |
2708 | builder.add("webster", "tcp", 765);
2709 |
2710 | builder.add("webster", "udp", 765);
2711 |
2712 | builder.add("phonebook", "tcp", 767);
2713 |
2714 | builder.add("phonebook", "udp", 767);
2715 |
2716 | builder.add("vid", "tcp", 769);
2717 |
2718 | builder.add("vid", "udp", 769);
2719 |
2720 | builder.add("cadlock", "tcp", 770);
2721 |
2722 | builder.add("cadlock", "udp", 770);
2723 |
2724 | builder.add("rtip", "tcp", 771);
2725 |
2726 | builder.add("rtip", "udp", 771);
2727 |
2728 | builder.add("cycleserv2", "tcp", 772);
2729 |
2730 | builder.add("cycleserv2", "udp", 772);
2731 |
2732 | builder.add("submit", "tcp", 773);
2733 |
2734 | builder.add("notify", "udp", 773);
2735 |
2736 | builder.add("rpasswd", "tcp", 774);
2737 |
2738 | builder.add("acmaint_dbd", "udp", 774);
2739 |
2740 | builder.add("entomb", "tcp", 775);
2741 |
2742 | builder.add("acmaint_transd", "udp", 775);
2743 |
2744 | builder.add("wpages", "tcp", 776);
2745 |
2746 | builder.add("wpages", "udp", 776);
2747 |
2748 | builder.add("multiling-http", "tcp", 777);
2749 |
2750 | builder.add("multiling-http", "udp", 777);
2751 |
2752 | builder.add("wpgs", "tcp", 780);
2753 |
2754 | builder.add("wpgs", "udp", 780);
2755 |
2756 | builder.add("mdbs_daemon", "tcp", 800);
2757 |
2758 | builder.add("mdbs_daemon", "udp", 800);
2759 |
2760 | builder.add("device", "tcp", 801);
2761 |
2762 | builder.add("device", "udp", 801);
2763 |
2764 | builder.add("fcp-udp", "tcp", 810);
2765 |
2766 | builder.add("fcp-udp", "udp", 810);
2767 |
2768 | builder.add("itm-mcell-s", "tcp", 828);
2769 |
2770 | builder.add("itm-mcell-s", "udp", 828);
2771 |
2772 | builder.add("pkix-3-ca-ra", "tcp", 829);
2773 |
2774 | builder.add("pkix-3-ca-ra", "udp", 829);
2775 |
2776 | builder.add("netconf-ssh", "tcp", 830);
2777 |
2778 | builder.add("netconf-ssh", "udp", 830);
2779 |
2780 | builder.add("netconf-beep", "tcp", 831);
2781 |
2782 | builder.add("netconf-beep", "udp", 831);
2783 |
2784 | builder.add("netconfsoaphttp", "tcp", 832);
2785 |
2786 | builder.add("netconfsoaphttp", "udp", 832);
2787 |
2788 | builder.add("netconfsoapbeep", "tcp", 833);
2789 |
2790 | builder.add("netconfsoapbeep", "udp", 833);
2791 |
2792 | builder.add("dhcp-failover2", "tcp", 847);
2793 |
2794 | builder.add("dhcp-failover2", "udp", 847);
2795 |
2796 | builder.add("gdoi", "tcp", 848);
2797 |
2798 | builder.add("gdoi", "udp", 848);
2799 |
2800 | builder.add("iscsi", "tcp", 860);
2801 |
2802 | builder.add("iscsi", "udp", 860);
2803 |
2804 | builder.add("owamp-control", "tcp", 861);
2805 |
2806 | builder.add("owamp-control", "udp", 861);
2807 |
2808 | builder.add("rsync", "tcp", 873);
2809 |
2810 | builder.add("rsync", "udp", 873);
2811 |
2812 | builder.add("iclcnet-locate", "tcp", 886);
2813 |
2814 | builder.add("iclcnet-locate", "udp", 886);
2815 |
2816 | builder.add("iclcnet_svinfo", "tcp", 887);
2817 |
2818 | builder.add("iclcnet_svinfo", "udp", 887);
2819 |
2820 | builder.add("accessbuilder", "tcp", 888);
2821 |
2822 | builder.add("accessbuilder", "udp", 888);
2823 |
2824 | builder.add("cddbp", "tcp", 888);
2825 |
2826 | builder.add("omginitialrefs", "tcp", 900);
2827 |
2828 | builder.add("omginitialrefs", "udp", 900);
2829 |
2830 | builder.add("smpnameres", "tcp", 901);
2831 |
2832 | builder.add("smpnameres", "udp", 901);
2833 |
2834 | builder.add("ideafarm-door", "tcp", 902);
2835 |
2836 | builder.add("ideafarm-door", "udp", 902);
2837 |
2838 | builder.add("ideafarm-panic", "tcp", 903);
2839 |
2840 | builder.add("ideafarm-panic", "udp", 903);
2841 |
2842 | builder.add("kink", "tcp", 910);
2843 |
2844 | builder.add("kink", "udp", 910);
2845 |
2846 | builder.add("xact-backup", "tcp", 911);
2847 |
2848 | builder.add("xact-backup", "udp", 911);
2849 |
2850 | builder.add("apex-mesh", "tcp", 912);
2851 |
2852 | builder.add("apex-mesh", "udp", 912);
2853 |
2854 | builder.add("apex-edge", "tcp", 913);
2855 |
2856 | builder.add("apex-edge", "udp", 913);
2857 |
2858 | builder.add("ftps-data", "tcp", 989);
2859 |
2860 | builder.add("ftps-data", "udp", 989);
2861 |
2862 | builder.add("ftps", "tcp", 990);
2863 |
2864 | builder.add("ftps", "udp", 990);
2865 |
2866 | builder.add("nas", "tcp", 991);
2867 |
2868 | builder.add("nas", "udp", 991);
2869 |
2870 | builder.add("telnets", "tcp", 992);
2871 |
2872 | builder.add("telnets", "udp", 992);
2873 |
2874 | builder.add("imaps", "tcp", 993);
2875 |
2876 | builder.add("imaps", "udp", 993);
2877 |
2878 | builder.add("ircs", "tcp", 994);
2879 |
2880 | builder.add("ircs", "udp", 994);
2881 |
2882 | builder.add("pop3s", "tcp", 995);
2883 |
2884 | builder.add("pop3s", "udp", 995);
2885 |
2886 | builder.add("vsinet", "tcp", 996);
2887 |
2888 | builder.add("vsinet", "udp", 996);
2889 |
2890 | builder.add("maitrd", "tcp", 997);
2891 |
2892 | builder.add("maitrd", "udp", 997);
2893 |
2894 | builder.add("busboy", "tcp", 998);
2895 |
2896 | builder.add("puparp", "udp", 998);
2897 |
2898 | builder.add("garcon", "tcp", 999);
2899 |
2900 | builder.add("applix", "udp", 999);
2901 |
2902 | builder.add("puprouter", "tcp", 999);
2903 |
2904 | builder.add("puprouter", "udp", 999);
2905 |
2906 | builder.add("cadlock2", "tcp", 1000);
2907 |
2908 | builder.add("cadlock2", "udp", 1000);
2909 |
2910 | builder.add("surf", "tcp", 1010);
2911 |
2912 | builder.add("surf", "udp", 1010);
2913 |
2914 | builder.add("exp1", "tcp", 1021);
2915 |
2916 | builder.add("exp1", "udp", 1021);
2917 |
2918 | builder.add("exp2", "tcp", 1022);
2919 |
2920 | builder.add("exp2", "udp", 1022);
2921 |
2922 |
2923 | return builder.build();
2924 | }
2925 | }
2926 |
--------------------------------------------------------------------------------
/src/main/java/jnr/netdb/NativeProtocolsDB.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2010 Wayne Meissner
3 | *
4 | * This file is part of jnr.
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS,
14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | package jnr.netdb;
20 |
21 | import jnr.ffi.*;
22 | import jnr.ffi.Runtime;
23 | import jnr.ffi.annotations.Direct;
24 |
25 | import java.util.ArrayList;
26 |
27 | import java.util.Collection;
28 | import java.util.Collections;
29 | import java.util.HashMap;
30 | import java.util.List;
31 | import java.util.Map;
32 | import java.util.logging.Level;
33 | import java.util.logging.Logger;
34 |
35 | import static jnr.ffi.Platform.OS.*;
36 |
37 | /**
38 | *
39 | */
40 | abstract class NativeProtocolsDB implements ProtocolsDB {
41 |
42 | public static final NativeProtocolsDB getInstance() {
43 | return SingletonHolder.INSTANCE;
44 | }
45 |
46 | private static final class SingletonHolder {
47 | public static final NativeProtocolsDB INSTANCE = load();
48 | }
49 |
50 | private static final NativeProtocolsDB load() {
51 | try {
52 | Platform.OS os = Platform.getNativePlatform().getOS();
53 |
54 | // The protoent struct is only known to match on Windows, MacOSX, Linux, Solaris.
55 | // We assume FreeBSD and NetBSD also match.
56 | if (!(os.equals(DARWIN) || (os.equals(WINDOWS) && Platform.getNativePlatform().getCPU() == Platform.CPU.I386)
57 | || os.equals(LINUX) || os.equals(SOLARIS)
58 | || os.equals(FREEBSD) || os.equals(NETBSD))) {
59 | return null;
60 | }
61 |
62 | LibProto lib;
63 | if (os.equals(WINDOWS)) {
64 | Map options = new HashMap();
65 | options.put(LibraryOption.CallingConvention, CallingConvention.STDCALL);
66 | lib = Library.loadLibrary(LibProto.class, options, "Ws2_32");
67 | } else {
68 | String[] libnames = os.equals(SOLARIS)
69 | ? new String[]{"socket", "nsl", "c"}
70 | : new String[]{"c"};
71 | lib = os.equals(LINUX)
72 | ? Library.loadLibrary(LinuxLibProto.class, libnames)
73 | : Library.loadLibrary(LibProto.class, libnames);
74 | }
75 |
76 | NativeProtocolsDB protocolsDB = os.equals(LINUX)
77 | ? new LinuxNativeProtocolsDB((LinuxLibProto) lib)
78 | : new DefaultNativeProtocolsDB(lib);
79 | // Try to lookup a protocol to make sure the library loaded and found the functions
80 | protocolsDB.getProtocolByName("ip");
81 | protocolsDB.getProtocolByNumber(0);
82 |
83 | return protocolsDB;
84 | } catch (Throwable t) {
85 | Logger.getLogger(NativeProtocolsDB.class.getName()).log(Level.WARNING, "Failed to load native protocols db", t);
86 | return null;
87 | }
88 | }
89 |
90 | public static class UnixProtoent extends jnr.ffi.Struct {
91 | public final String name = new UTF8StringRef();
92 | public final Pointer aliases = new Pointer();
93 | public final Signed32 proto = new Signed32();
94 |
95 | public UnixProtoent(jnr.ffi.Runtime runtime) {
96 | super(runtime);
97 | }
98 | }
99 |
100 | public static interface LibProto {
101 | UnixProtoent getprotobyname(String name);
102 | UnixProtoent getprotobynumber(int proto);
103 | UnixProtoent getprotoent();
104 | void setprotoent(int stayopen);
105 | void endprotoent();
106 | }
107 |
108 | public static interface LinuxLibProto extends LibProto{
109 | int getprotobyname_r(String proto, @Direct UnixProtoent protoent, Pointer buf, NativeLong buflen, Pointer result);
110 | int getprotobynumber_r(int proto, @Direct UnixProtoent protoent, Pointer buf, NativeLong buflen, Pointer result);
111 | int getprotoent_r(@Direct UnixProtoent protoent, Pointer buf, NativeLong buflen, Pointer result);
112 | }
113 |
114 | static Protocol protocolFromNative(UnixProtoent p) {
115 | if (p == null) {
116 | return null;
117 | }
118 |
119 | List emptyAliases = Collections.emptyList();
120 |
121 | Pointer ptr;
122 | final Collection aliases = ((ptr = p.aliases.get()) != null)
123 | ? StringUtil.getNullTerminatedStringArray(ptr) : emptyAliases;
124 |
125 | return new Protocol(p.name.get(), (short) p.proto.get(), aliases);
126 | }
127 |
128 | static final class DefaultNativeProtocolsDB extends NativeProtocolsDB {
129 | private final LibProto lib;
130 |
131 | DefaultNativeProtocolsDB(LibProto lib) {
132 | this.lib = lib;
133 | }
134 |
135 | public synchronized Protocol getProtocolByName(String name) {
136 | return protocolFromNative(lib.getprotobyname(name));
137 | }
138 |
139 | public synchronized Protocol getProtocolByNumber(Integer proto) {
140 | return protocolFromNative(lib.getprotobynumber(proto));
141 | }
142 |
143 | public synchronized Collection getAllProtocols() {
144 | UnixProtoent p;
145 | List allProtocols = new ArrayList();
146 |
147 | lib.setprotoent(0);
148 | try {
149 | while ((p = lib.getprotoent()) != null) {
150 | allProtocols.add(protocolFromNative(p));
151 | }
152 | } finally {
153 | lib.endprotoent();
154 | }
155 |
156 | return allProtocols;
157 | }
158 | }
159 |
160 | static final class LinuxNativeProtocolsDB extends NativeProtocolsDB {
161 | private static final int BUFLEN = 4096;
162 | private final Runtime runtime;
163 | private final Pointer buf;
164 | private final LinuxLibProto lib;
165 |
166 |
167 | LinuxNativeProtocolsDB(LinuxLibProto lib) {
168 | this.lib = lib;
169 | this.runtime = Library.getRuntime(lib);
170 | this.buf = Memory.allocateDirect(runtime, BUFLEN);
171 | }
172 |
173 | public synchronized Protocol getProtocolByName(String name) {
174 | UnixProtoent protoent = new UnixProtoent(runtime);
175 | Pointer result = Memory.allocateDirect(runtime, runtime.addressSize());
176 | if (lib.getprotobyname_r(name, protoent, buf, new NativeLong(BUFLEN), result) == 0) {
177 | return result.getPointer(0) != null ? protocolFromNative(protoent) : null;
178 | }
179 |
180 | throw new RuntimeException("getprotobyname_r failed");
181 | }
182 |
183 | public synchronized Protocol getProtocolByNumber(Integer number) {
184 | UnixProtoent protoent = new UnixProtoent(runtime);
185 | Pointer result = Memory.allocateDirect(runtime, runtime.addressSize());
186 | if (lib.getprotobynumber_r(number, protoent, buf, new NativeLong(BUFLEN), result) == 0) {
187 | return result.getPointer(0) != null ? protocolFromNative(protoent) : null;
188 | }
189 |
190 | throw new RuntimeException("getprotobynumber_r failed");
191 | }
192 |
193 | public synchronized Collection getAllProtocols() {
194 | UnixProtoent p = new UnixProtoent(runtime);
195 | List allProtocols = new ArrayList();
196 | Pointer result = Memory.allocateDirect(runtime, runtime.addressSize());
197 | NativeLong buflen = new NativeLong(BUFLEN);
198 |
199 | lib.setprotoent(0);
200 | try {
201 | while (lib.getprotoent_r(p, buf, buflen, result) == 0 && result.getPointer(0) != null) {
202 | allProtocols.add(protocolFromNative(p));
203 | }
204 | } finally {
205 | lib.endprotoent();
206 | }
207 |
208 | return allProtocols;
209 | }
210 | }
211 | }
212 |
--------------------------------------------------------------------------------
/src/main/java/jnr/netdb/NativeServicesDB.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2010 Wayne Meissner
3 | *
4 | * This file is part of jnr.
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS,
14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | package jnr.netdb;
20 |
21 | import jnr.ffi.*;
22 | import jnr.ffi.Runtime;
23 | import jnr.ffi.annotations.Direct;
24 | import jnr.ffi.annotations.Out;
25 |
26 | import java.nio.ByteOrder;
27 | import java.util.ArrayList;
28 | import java.util.Collection;
29 | import java.util.Collections;
30 | import java.util.HashMap;
31 | import java.util.List;
32 | import java.util.Map;
33 | import java.util.logging.Level;
34 | import java.util.logging.Logger;
35 |
36 | import static jnr.ffi.Platform.OS.*;
37 |
38 | /**
39 | *
40 | */
41 | abstract class NativeServicesDB implements ServicesDB {
42 |
43 | protected final LibServices lib;
44 |
45 | public NativeServicesDB(LibServices lib) {
46 | this.lib = lib;
47 | }
48 |
49 | public static final NativeServicesDB getInstance() {
50 | return SingletonHolder.INSTANCE;
51 | }
52 |
53 | private static final class SingletonHolder {
54 | public static final NativeServicesDB INSTANCE = load();
55 | }
56 |
57 | static final NativeServicesDB load() {
58 | try {
59 | Platform.OS os = Platform.getNativePlatform().getOS();
60 |
61 | // The ServiceEntry struct is only known to match on Windows, MacOSX, Linux, Solaris.
62 | // We assume FreeBSD and NetBSD also match.
63 | if (!(os.equals(DARWIN) || (os.equals(WINDOWS) && Platform.getNativePlatform().getCPU() == Platform.CPU.I386)
64 | || os.equals(LINUX) || os.equals(SOLARIS)
65 | || os.equals(FREEBSD) || os.equals(NETBSD))) {
66 | return null;
67 | }
68 |
69 | LibServices lib;
70 | if (os.equals(WINDOWS)) {
71 | Map options = new HashMap();
72 | options.put(LibraryOption.CallingConvention, CallingConvention.STDCALL);
73 | lib = Library.loadLibrary(LibServices.class, options, "Ws2_32");
74 |
75 | } else {
76 | String[] libnames = os.equals(SOLARIS)
77 | ? new String[] { "socket", "nsl", "c" }
78 | : new String[] { "c" };
79 |
80 | if (os.equals(LINUX)) {
81 | lib = Library.loadLibrary(LinuxLibServices.class, libnames);
82 | } else {
83 | lib = Library.loadLibrary(LibServices.class, libnames);
84 | }
85 | }
86 |
87 | NativeServicesDB services = os.equals(LINUX)
88 | ? new LinuxServicesDB(lib)
89 | : new DefaultNativeServicesDB(lib);
90 | // Try to lookup a service to make sure the library loaded and found the functions
91 | if (services.getServiceByName("comsat", "udp") == null) {
92 | return null;
93 | }
94 | services.getServiceByName("bootps", "udp");
95 | services.getServiceByPort(67, "udp");
96 |
97 | return services;
98 |
99 | } catch (Throwable t) {
100 | Logger.getLogger(NativeServicesDB.class.getName()).log(Level.WARNING, "Failed to load native services db", t);
101 | return null;
102 | }
103 | }
104 |
105 | public static class UnixServent extends jnr.ffi.Struct {
106 | public final String name = new UTF8StringRef();
107 | public final Pointer aliases = new Pointer();
108 | public final Signed32 port = new Signed32();
109 | public final String proto = new UTF8StringRef();
110 |
111 | public UnixServent(jnr.ffi.Runtime runtime) {
112 | super(runtime);
113 | }
114 | }
115 |
116 | public static class LinuxServent extends UnixServent {
117 | public static final int BUFLEN = 4096;
118 | public final jnr.ffi.Pointer buf;
119 |
120 | public LinuxServent(jnr.ffi.Runtime runtime) {
121 | super(runtime);
122 | this.buf = Memory.allocateDirect(runtime, BUFLEN, true);
123 | }
124 | }
125 |
126 | public static interface LibServices {
127 | UnixServent getservbyname(String name, String proto);
128 | UnixServent getservbyport(Integer port, String proto);
129 | UnixServent getservent();
130 | void endservent();
131 | }
132 |
133 | public static interface LinuxLibServices extends LibServices {
134 | int getservbyname_r(String name, String proto, @Direct UnixServent servent,
135 | Pointer buf, NativeLong buflen, @Out Pointer result);
136 | int getservbyport_r(Integer port, String proto, @Direct UnixServent servent,
137 | Pointer buf, NativeLong buflen, @Out Pointer result);
138 | int getservent_r(@Direct UnixServent servent,
139 | Pointer buf, NativeLong buflen, Pointer result);
140 | }
141 |
142 | static int ntohs(int value) {
143 | int hostValue = ByteOrder.nativeOrder().equals(ByteOrder.LITTLE_ENDIAN) ? Short.reverseBytes((short) value) : value;
144 | if (hostValue < 0) {
145 | // The byte flipping above will return numbers >= 32768 as a negative value,
146 | // so they need to be converted back to a unsigned 16 bit value.
147 | hostValue = ((hostValue & 0x7FFF) + 0x8000);
148 | }
149 |
150 | return hostValue;
151 | }
152 |
153 | static int htons(int value) {
154 | return ByteOrder.nativeOrder().equals(ByteOrder.LITTLE_ENDIAN) ? Short.reverseBytes((short) value) : value;
155 | }
156 |
157 | static Service serviceFromNative(UnixServent s) {
158 | if (s == null) {
159 | return null;
160 | }
161 |
162 | List emptyAliases = Collections.emptyList();
163 | Pointer ptr;
164 | final Collection aliases = ((ptr = s.aliases.get()) != null)
165 | ? StringUtil.getNullTerminatedStringArray(ptr) : emptyAliases;
166 |
167 | return new Service(s.name.get(), ntohs(s.port.get()), s.proto.get(), aliases);
168 | }
169 |
170 | static final class DefaultNativeServicesDB extends NativeServicesDB {
171 | DefaultNativeServicesDB(LibServices lib) {
172 | super(lib);
173 | }
174 |
175 | public Collection getAllServices() {
176 | UnixServent s;
177 | List allServices = new ArrayList();
178 |
179 | try {
180 | while ((s = lib.getservent()) != null) {
181 | allServices.add(serviceFromNative(s));
182 | }
183 | } finally {
184 | lib.endservent();
185 | }
186 |
187 | return allServices;
188 | }
189 |
190 |
191 | public Service getServiceByName(String name, String proto) {
192 | return serviceFromNative(lib.getservbyname(name, proto));
193 | }
194 |
195 | public Service getServiceByPort(Integer port, String proto) {
196 | return serviceFromNative(lib.getservbyport(htons(port), proto));
197 | }
198 | }
199 |
200 | static final class LinuxServicesDB extends NativeServicesDB {
201 | private static final int BUFLEN = 4096;
202 | private final LinuxLibServices lib;
203 | private final Runtime runtime;
204 | private final Pointer buf;
205 |
206 | LinuxServicesDB(LibServices lib) {
207 | super(lib);
208 | this.lib = (LinuxLibServices) lib;
209 | this.runtime = Library.getRuntime(lib);
210 | this.buf = Memory.allocateDirect(runtime, BUFLEN);
211 | }
212 |
213 | public synchronized Service getServiceByName(String name, String proto) {
214 | UnixServent servent = new UnixServent(runtime);
215 | Pointer result = Memory.allocateDirect(runtime, runtime.addressSize());
216 | if (lib.getservbyname_r(name, proto, servent, buf, new NativeLong(BUFLEN), result) == 0) {
217 | return result.getPointer(0) != null ? serviceFromNative(servent) : null;
218 | }
219 |
220 | throw new RuntimeException("getservbyname_r failed");
221 | }
222 |
223 | public synchronized Service getServiceByPort(Integer port, String proto) {
224 | UnixServent servent = new UnixServent(runtime);
225 | Pointer result = Memory.allocateDirect(runtime, runtime.addressSize());
226 | if (lib.getservbyport_r(htons(port), proto, servent, buf, new NativeLong(BUFLEN), result) == 0) {
227 | return result.getPointer(0) != null ? serviceFromNative(servent) : null;
228 | }
229 |
230 | throw new RuntimeException("getservbyport_r failed");
231 | }
232 |
233 | public synchronized Collection getAllServices() {
234 | UnixServent s = new UnixServent(runtime);
235 | List allServices = new ArrayList();
236 | Pointer result = Memory.allocateDirect(runtime, runtime.addressSize());
237 | NativeLong buflen = new NativeLong(BUFLEN);
238 |
239 | try {
240 | while (lib.getservent_r(s, buf, buflen, result) == 0 && result.getPointer(0) != null) {
241 | allServices.add(serviceFromNative(s));
242 | }
243 | } finally {
244 | lib.endservent();
245 | }
246 |
247 | return allServices;
248 | }
249 | }
250 |
251 | }
252 |
--------------------------------------------------------------------------------
/src/main/java/jnr/netdb/NetDBEntry.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2010 Wayne Meissner
3 | *
4 | * This file is part of jnr.
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS,
14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | package jnr.netdb;
20 |
21 | import java.util.Collection;
22 |
23 | final class NetDBEntry {
24 |
25 | final String name;
26 | final String data;
27 | final Collection aliases;
28 |
29 | NetDBEntry(String name, String data, Collection aliases) {
30 | this.name = name;
31 | this.data = data;
32 | this.aliases = aliases;
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/jnr/netdb/NetDBFilter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2010 Wayne Meissner
3 | *
4 | * This file is part of jnr.
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS,
14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | package jnr.netdb;
20 |
21 | /**
22 | *
23 | */
24 | interface NetDBFilter {
25 | T filter(NetDBEntry e);
26 | }
27 |
--------------------------------------------------------------------------------
/src/main/java/jnr/netdb/NetDBIterator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2010 Wayne Meissner
3 | *
4 | * This file is part of jnr.
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS,
14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | package jnr.netdb;
20 |
21 | import java.io.BufferedReader;
22 | import java.io.IOException;
23 | import java.io.Reader;
24 | import java.util.ArrayList;
25 | import java.util.Collections;
26 | import java.util.List;
27 | import java.util.NoSuchElementException;
28 |
29 | final class NetDBIterator implements java.util.Iterator {
30 |
31 | private final BufferedReader reader;
32 | private NetDBEntry next = null;
33 |
34 | public NetDBIterator(Reader r) {
35 | this.reader = r instanceof BufferedReader ? (BufferedReader) r : new BufferedReader(r);
36 | }
37 |
38 | NetDBEntry readNextEntry() throws IOException {
39 | String s = null;
40 |
41 | while ((s = reader.readLine()) != null) {
42 |
43 | String[] line = s.split("#", 2);
44 | // Skip empty lines, or lines that are all comment
45 | if (line.length < 1 || line[0].length() == 0) {
46 | continue;
47 | }
48 |
49 | String[] fields = line[0].trim().split("\\s+");
50 | if (fields.length < 2 || fields[0] == null || fields[1] == null) {
51 | continue;
52 | }
53 |
54 | String serviceName = fields[0];
55 | String data = fields[1];
56 | List aliases;
57 | if (fields.length > 2) {
58 | aliases = new ArrayList(fields.length - 2);
59 | for (int i = 2; i < fields.length; ++i) {
60 | if (fields[i] != null) {
61 | aliases.add(fields[i]);
62 | }
63 | }
64 | } else {
65 | aliases = Collections.emptyList();
66 | }
67 |
68 | return new NetDBEntry(serviceName, data, aliases);
69 | }
70 |
71 | return null;
72 | }
73 |
74 | public boolean hasNext() {
75 | try {
76 | return next != null || (next = readNextEntry()) != null;
77 | } catch (IOException ex) {
78 | return false;
79 | }
80 | }
81 |
82 | public NetDBEntry next() {
83 | try {
84 | NetDBEntry s = next != null ? next : readNextEntry();
85 | if (s == null) {
86 | throw new NoSuchElementException("not found");
87 | }
88 | next = null;
89 |
90 | return s;
91 |
92 | } catch (IOException ex) {
93 | throw new NoSuchElementException(ex.getMessage());
94 | }
95 | }
96 |
97 | public void remove() {
98 | throw new UnsupportedOperationException("Not supported yet.");
99 | }
100 | }
101 |
--------------------------------------------------------------------------------
/src/main/java/jnr/netdb/NetDBParser.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2010 Wayne Meissner
3 | *
4 | * This file is part of jnr.
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS,
14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | package jnr.netdb;
20 |
21 | import java.io.Closeable;
22 | import java.io.IOException;
23 | import java.io.Reader;
24 | import java.util.Iterator;
25 |
26 | /**
27 | *
28 | */
29 | class NetDBParser implements Iterable, Closeable {
30 | private final Reader reader;
31 |
32 | public NetDBParser(Reader r) {
33 | this.reader = r;
34 | }
35 |
36 | public Iterator iterator() {
37 | return new NetDBIterator(reader);
38 | }
39 |
40 | public void close() throws IOException {
41 | reader.close();
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/src/main/java/jnr/netdb/Protocol.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2010 Wayne Meissner
3 | *
4 | * This file is part of jnr.
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS,
14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | package jnr.netdb;
20 |
21 | import java.util.Collection;
22 |
23 | /**
24 | * An entry in the system protocol database
25 | */
26 | public final class Protocol {
27 | /** Official protocol name */
28 | private final String protocolName;
29 |
30 | private final int proto;
31 |
32 | /** All the aliases for this protocol */
33 | private final Collection aliases;
34 |
35 | Protocol(String name, int proto, Collection aliases) {
36 | this.protocolName = name;
37 | this.proto = proto;
38 | this.aliases = aliases;
39 | }
40 |
41 | /**
42 | * Locates a protocol by name.
43 | *
44 | * @param name the official IANA name for the protocol, or an alias.
45 | * @return a {@code Protocol} instance, or {@code null} if the protocol could not be found.
46 | */
47 | public static final Protocol getProtocolByName(String name) {
48 | return getProtocolDB().getProtocolByName(name);
49 | }
50 |
51 |
52 | /**
53 | * Locates a protocol by number.
54 | *
55 | * @param proto the internet protocol number of the protocol.
56 | * @return a {@code Protocol} instance, or {@code null} if the protocol could not be found.
57 | */
58 | public static final Protocol getProtocolByNumber(int proto) {
59 | return getProtocolDB().getProtocolByNumber(proto);
60 | }
61 |
62 |
63 | /**
64 | * Returns the official IANA name of this {@code Protocol}
65 | *
66 | * @return The name of this {@code Protocol} as a {@code String}
67 | */
68 | public final String getName() {
69 | return protocolName;
70 | }
71 |
72 | /**
73 | * Returns the official IANA protocol number for this {@code Protocol}
74 | *
75 | * @return The protocol number for this {@code Protocol} as an {@code int}
76 | */
77 | public final int getProto() {
78 | return proto;
79 | }
80 |
81 | /**
82 | * Returns a list of aliases this {@code Protocol} is also known by.
83 | *
84 | * @return A {@code Collection} of Strings for aliases this {@code Protocol}
85 | */
86 | public final Collection getAliases() {
87 | return aliases;
88 | }
89 |
90 | /**
91 | * Returns the currently loaded ProtocolDB
92 | *
93 | * @return an instance of {@code ProtocolDB}
94 | */
95 | private static final ProtocolsDB getProtocolDB() {
96 | return ProtocolDBSingletonHolder.INSTANCE;
97 | }
98 |
99 | /**
100 | * Holds the global lazily-loaded instance of the ProtocolDB
101 | */
102 | private static final class ProtocolDBSingletonHolder {
103 | static final ProtocolsDB INSTANCE = load();
104 |
105 | private static final ProtocolsDB load() {
106 | // Try to use the native functions if possible
107 | ProtocolsDB db = NativeProtocolsDB.getInstance();
108 |
109 | // Fall back to parsing /etc/protocols directly.
110 | if (db == null) {
111 | db = FileProtocolsDB.getInstance();
112 | }
113 |
114 | // As a last resort, fall back to the hard coded table
115 | return db != null ? db : IANAProtocolsDB.getInstance();
116 | }
117 | }
118 |
119 | @Override
120 | public String toString() {
121 | return String.format("",
122 | protocolName, proto, aliases);
123 | };
124 | }
125 |
--------------------------------------------------------------------------------
/src/main/java/jnr/netdb/ProtocolsDB.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2010 Wayne Meissner
3 | *
4 | * This file is part of jnr.
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS,
14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | package jnr.netdb;
20 |
21 | import java.util.Collection;
22 |
23 | /**
24 | *
25 | */
26 | interface ProtocolsDB {
27 | public abstract Protocol getProtocolByName(String name);
28 | public abstract Protocol getProtocolByNumber(Integer number);
29 | public abstract Collection getAllProtocols();
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/jnr/netdb/Service.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2010 Wayne Meissner
3 | *
4 | * This file is part of jnr.
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS,
14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | package jnr.netdb;
20 |
21 | import java.util.Collection;
22 | import java.util.Collections;
23 |
24 | /**
25 | * Holds information about TCP and UDP services on a host.
26 | */
27 | public final class Service {
28 | /** Official service name */
29 | private final String serviceName;
30 | /** TCP or UDP port number */
31 | private final int port;
32 |
33 | /** Protocol to use */
34 | final String proto;
35 |
36 | /** All the aliases for this service */
37 | private final Collection aliases;
38 |
39 | Service(String name, int port, String proto, Collection aliases) {
40 | this.serviceName = name;
41 | this.port = port;
42 | this.proto = proto;
43 | this.aliases = aliases;
44 | }
45 |
46 | /**
47 | * Locates a service by name and protocol.
48 | *
49 | * @param name the official IANA name for the service, or an alias.
50 | * @param proto the protocol for the service. Usually "tcp" or "udp".
51 | * @return a {@code Service} instance, or {@code null} if the service could not be found.
52 | */
53 | public static final Service getServiceByName(String name, String proto) {
54 | return getServicesDB().getServiceByName(name, proto);
55 | }
56 |
57 |
58 | /**
59 | * Locates a service by port and protocol.
60 | *
61 | * @param port the TCP or UDP port of the service.
62 | * @param proto the protocol for the service. Usually "tcp" or "udp".
63 | * @return a {@code Service} instance, or {@code null} if the service could not be found.
64 | */
65 | public static final Service getServiceByPort(int port, String proto) {
66 | return getServicesDB().getServiceByPort(port, proto);
67 | }
68 |
69 | /**
70 | * Returns a list of all services.
71 | *
72 | * @return a {@code Collection} of {@code Service} instances.
73 | */
74 | public static final Collection getAllServices() {
75 | return Collections.emptyList();
76 | }
77 |
78 | /**
79 | * Returns the official IANA name of this {@code Service}
80 | *
81 | * @return The name of this {@code Service} as a {@code String}
82 | */
83 | public final String getName() {
84 | return serviceName;
85 | }
86 |
87 | /**
88 | * Returns the official IANA port for this {@code Service}
89 | *
90 | * @return The port for this {@code Service} as an {@code int}
91 | */
92 | public final int getPort() {
93 | return port;
94 | }
95 |
96 | /**
97 | * Gets a list of aliases this {@code Service} is also known as.
98 | *
99 | * @return A {@code Collection} of Strings for aliases this {@code Service}
100 | */
101 | public final Collection getAliases() {
102 | return aliases;
103 | }
104 |
105 | /**
106 | * Returns the currently loaded ServicesDB
107 | *
108 | * @return an instance of {@code ServicesDB}
109 | */
110 | private static final ServicesDB getServicesDB() {
111 | return ServicesDBSingletonHolder.INSTANCE;
112 | }
113 |
114 | /**
115 | * Holds the global lazily-loaded instance of the ServicesDB
116 | */
117 | private static final class ServicesDBSingletonHolder {
118 | static final ServicesDB INSTANCE = load();
119 |
120 | private static final ServicesDB load() {
121 | // Try to use the native functions if possible
122 | ServicesDB db = NativeServicesDB.load();
123 |
124 | // Fall back to parsing /etc/services directly.
125 | if (db == null) {
126 | db = FileServicesDB.getInstance();
127 | }
128 |
129 | // As a last resort, fall back to the hard coded table
130 | return db != null ? db : IANAServicesDB.getInstance();
131 | }
132 | }
133 |
134 | @Override
135 | public String toString() {
136 | return String.format("",
137 | serviceName, port, proto, aliases);
138 | };
139 | }
140 |
--------------------------------------------------------------------------------
/src/main/java/jnr/netdb/ServicesDB.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2010 Wayne Meissner
3 | *
4 | * This file is part of jnr.
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS,
14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | package jnr.netdb;
20 |
21 | import java.util.Collection;
22 |
23 | /**
24 | *
25 | */
26 | interface ServicesDB {
27 | public abstract Service getServiceByName(String name, String proto);
28 | public abstract Service getServiceByPort(Integer port, String proto);
29 | public abstract Collection getAllServices();
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/jnr/netdb/StringUtil.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2010 Wayne Meissner
3 | *
4 | * This file is part of jnr.
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS,
14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | package jnr.netdb;
20 |
21 | import jnr.ffi.Platform;
22 | import jnr.ffi.Pointer;
23 | import java.util.ArrayList;
24 | import java.util.Collections;
25 | import java.util.List;
26 |
27 | /**
28 | * Utility class for native strings
29 | */
30 | class StringUtil {
31 |
32 | public static final List getNullTerminatedStringArray(Pointer ptr) {
33 | // If it is an empty list, do not allocate an empty ArrayList for it
34 | if (ptr == null || ptr.getPointer(0) == null) {
35 | return Collections.emptyList();
36 | }
37 |
38 | final int pointerSize = ptr.getRuntime().addressSize();
39 |
40 | List array = new ArrayList();
41 |
42 | Pointer p;
43 | for (int off = 0; (p = ptr.getPointer(off)) != null; off += pointerSize) {
44 | array.add(p.getString(0));
45 | }
46 |
47 | return array;
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/src/test/java/jnr/netdb/FileProtocolDBTest.java:
--------------------------------------------------------------------------------
1 |
2 | package jnr.netdb;
3 |
4 | import org.junit.After;
5 | import org.junit.AfterClass;
6 | import org.junit.Before;
7 | import org.junit.BeforeClass;
8 | import org.junit.Test;
9 | import static org.junit.Assert.*;
10 |
11 | /**
12 | *
13 | */
14 | public class FileProtocolDBTest {
15 |
16 | public FileProtocolDBTest() {
17 | }
18 |
19 | @BeforeClass
20 | public static void setUpClass() throws Exception {
21 | }
22 |
23 | @AfterClass
24 | public static void tearDownClass() throws Exception {
25 | }
26 |
27 | @Before
28 | public void setUp() {
29 | }
30 |
31 | @After
32 | public void tearDown() {
33 | }
34 |
35 | @Test public void canLookupIpProtocolByName() {
36 | ProtocolsDB db = FileProtocolsDB.getInstance();
37 | // we try ip first and then ipv4 due to jnr/jnr-netdb#4
38 | Protocol p = Protocol.getProtocolByName("ip");
39 | if (p != null) {
40 | assertEquals("incorrect proto number", 0, p.getProto());
41 | assertEquals("incorrect name", "ip", p.getName());
42 | } else {
43 | p = Protocol.getProtocolByName("ipv4");
44 | assertNotNull("could not lookup ipv4 protocol", p);
45 | assertEquals("incorrect proto number", 4, p.getProto());
46 | assertEquals("incorrect name", "ipv4", p.getName());
47 | }
48 | }
49 |
50 | @Test public void canLookupIpProtocolByNumber() {
51 | ProtocolsDB db = FileProtocolsDB.getInstance();
52 | // we try ip first and then ipv4 due to jnr/jnr-netdb#4
53 | Protocol p = Protocol.getProtocolByName("ip");
54 | if (p != null) {
55 | p = Protocol.getProtocolByNumber(0);
56 | assertEquals("incorrect proto number", 0, p.getProto());
57 | assertEquals("incorrect name", "ip", p.getName());
58 | } else {
59 | p = Protocol.getProtocolByNumber(4);
60 | assertNotNull("could not lookup ip protocol", p);
61 | assertEquals("incorrect proto number", 4, p.getProto());
62 | assertEquals("incorrect name", "ipv4", p.getName());
63 | }
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/src/test/java/jnr/netdb/FileServicesDBTest.java:
--------------------------------------------------------------------------------
1 |
2 | package jnr.netdb;
3 |
4 | import org.junit.After;
5 | import org.junit.AfterClass;
6 | import org.junit.Before;
7 | import org.junit.BeforeClass;
8 | import org.junit.Test;
9 | import static org.junit.Assert.*;
10 |
11 | /**
12 | *
13 | */
14 | public class FileServicesDBTest {
15 |
16 | public FileServicesDBTest() {
17 | }
18 |
19 | @BeforeClass
20 | public static void setUpClass() throws Exception {
21 | }
22 |
23 | @AfterClass
24 | public static void tearDownClass() throws Exception {
25 | }
26 |
27 | @Before
28 | public void setUp() {
29 | }
30 |
31 | @After
32 | public void tearDown() {
33 | }
34 |
35 | @Test public void canLookupBootpServiceByName() {
36 | FileServicesDB db = new FileServicesDB();
37 | Service s = db.getServiceByName("bootps", "udp");
38 | assertNotNull("could not lookup bootps service", s);
39 | assertEquals("incorrect port", 67, s.getPort());
40 | assertEquals("incorrect name", "bootps", s.getName());
41 | }
42 |
43 | @Test public void canLookupBootpServiceByPort() {
44 | FileServicesDB db = new FileServicesDB();
45 | Service s = db.getServiceByPort(67, "udp");
46 | assertNotNull("could not lookup bootps service", s);
47 | assertEquals("incorrect port", 67, s.getPort());
48 | assertEquals("incorrect name", "bootps", s.getName());
49 | }
50 |
51 | @Test public void canLookupServiceWithAliasByName() {
52 | ServicesDB db = new FileServicesDB();
53 | Service s = db.getServiceByName("comsat", "udp");
54 | assertNotNull("could not lookup comsat/biff service", s);
55 | assertEquals("incorrect port", 512, s.getPort());
56 | assertTrue(s.getName().equals("biff") || s.getName().equals("comsat"));
57 | assertTrue(s.getAliases().contains("biff") || s.getAliases().contains("comsat"));
58 | }
59 |
60 | @Test public void canLookupServiceWithAliasByPort() {
61 | ServicesDB db = new FileServicesDB();
62 | Service s = db.getServiceByPort(512, "udp");
63 | assertNotNull("could not lookup comsat/biff service", s);
64 | assertEquals("incorrect port", 512, s.getPort());
65 | assertTrue(s.getName().equals("biff") || s.getName().equals("comsat"));
66 | assertTrue(s.getAliases().contains("biff") || s.getAliases().contains("comsat"));
67 | }
68 |
69 | }
--------------------------------------------------------------------------------
/src/test/java/jnr/netdb/NativeProtocolsDBTest.java:
--------------------------------------------------------------------------------
1 |
2 | package jnr.netdb;
3 |
4 | import org.junit.After;
5 | import org.junit.AfterClass;
6 | import org.junit.Before;
7 | import org.junit.BeforeClass;
8 | import org.junit.Test;
9 | import static org.junit.Assert.*;
10 |
11 | /**
12 | *
13 | */
14 | public class NativeProtocolsDBTest {
15 |
16 | public NativeProtocolsDBTest() {
17 | }
18 |
19 | @BeforeClass
20 | public static void setUpClass() throws Exception {
21 | }
22 |
23 | @AfterClass
24 | public static void tearDownClass() throws Exception {
25 | }
26 |
27 | @Before
28 | public void setUp() {
29 | }
30 |
31 | @After
32 | public void tearDown() {
33 | }
34 |
35 | @Test public void canLookupIpProtocolByName() {
36 | ProtocolsDB db = NativeProtocolsDB.getInstance();
37 | // we try ip first and then ipv4 due to jnr/jnr-netdb#4
38 | Protocol p = Protocol.getProtocolByName("ip");
39 | if (p != null) {
40 | assertEquals("incorrect proto number", 0, p.getProto());
41 | assertEquals("incorrect name", "ip", p.getName());
42 | } else {
43 | p = Protocol.getProtocolByName("ipv4");
44 | assertNotNull("could not lookup ipv4 protocol", p);
45 | assertEquals("incorrect proto number", 4, p.getProto());
46 | assertEquals("incorrect name", "ipv4", p.getName());
47 | }
48 | }
49 |
50 | @Test public void canLookupIpProtocolByNumber() {
51 | ProtocolsDB db = NativeProtocolsDB.getInstance();
52 | // we try ip first and then ipv4 due to jnr/jnr-netdb#4
53 | Protocol p = Protocol.getProtocolByName("ip");
54 | if (p != null) {
55 | p = Protocol.getProtocolByNumber(0);
56 | assertEquals("incorrect proto number", 0, p.getProto());
57 | assertEquals("incorrect name", "ip", p.getName());
58 | } else {
59 | p = Protocol.getProtocolByNumber(4);
60 | assertNotNull("could not lookup ip protocol", p);
61 | assertEquals("incorrect proto number", 4, p.getProto());
62 | assertEquals("incorrect name", "ipv4", p.getName());
63 | }
64 | }
65 |
66 | @Test public void canLookupTcpProtocolByName() {
67 | ProtocolsDB db = NativeProtocolsDB.getInstance();
68 | Protocol p = db.getProtocolByName("tcp");
69 | assertNotNull("could not lookup tcp protocol", p);
70 | assertEquals("incorrect proto number", 6, p.getProto());
71 | assertEquals("incorrect name", "tcp", p.getName());
72 | }
73 |
74 | @Test public void canLookupTcpProtocolByNumber() {
75 | ProtocolsDB db = NativeProtocolsDB.getInstance();
76 | Protocol p = db.getProtocolByNumber(6);
77 | assertNotNull("could not lookup tcp protocol", p);
78 | assertEquals("incorrect proto number", 6, p.getProto());
79 | assertEquals("incorrect name", "tcp", p.getName());
80 | }
81 |
82 | @Test public void getAllProtocolsReturnsNonEmptyList() {
83 | ProtocolsDB db = NativeProtocolsDB.getInstance();
84 | assertFalse(db.getAllProtocols().isEmpty());
85 | }
86 |
87 | @Test public void getAllProtocolsContainsTcp() {
88 | ProtocolsDB db = NativeProtocolsDB.getInstance();
89 | boolean tcpFound = false;
90 | for (Protocol p : db.getAllProtocols()) {
91 | if (p.getName().equals("tcp") || p.getAliases().contains("TCP")) {
92 | tcpFound = true;
93 | break;
94 | }
95 | }
96 | assertTrue(tcpFound);
97 | }
98 | }
--------------------------------------------------------------------------------
/src/test/java/jnr/netdb/NativeServicesDBTest.java:
--------------------------------------------------------------------------------
1 |
2 | package jnr.netdb;
3 |
4 | import jnr.ffi.Platform;
5 | import org.junit.After;
6 | import org.junit.AfterClass;
7 | import org.junit.Before;
8 | import org.junit.BeforeClass;
9 | import org.junit.Test;
10 | import static org.junit.Assert.*;
11 |
12 | /**
13 | *
14 | */
15 | public class NativeServicesDBTest {
16 |
17 | public NativeServicesDBTest() {
18 | }
19 |
20 | @BeforeClass
21 | public static void setUpClass() throws Exception {
22 | }
23 |
24 | @AfterClass
25 | public static void tearDownClass() throws Exception {
26 | }
27 |
28 | @Before
29 | public void setUp() {
30 | }
31 |
32 | @After
33 | public void tearDown() {
34 | }
35 |
36 | @Test public void canLookupServiceThan32768ByName() {
37 | if (Platform.getNativePlatform().getOS().equals(Platform.OS.DARWIN)) {
38 | ServicesDB db = NativeServicesDB.load();
39 | Service s = db.getServiceByName("blp5", "udp");
40 | assertNotNull("could not lookup blp5 service", s);
41 | assertEquals("incorrect port", 48129, s.getPort());
42 | assertEquals("incorrect name", "blp5", s.getName());
43 | }
44 | }
45 |
46 | @Test public void canLookupServiceLargerThan32768ByPort() {
47 | if (Platform.getNativePlatform().getOS().equals(Platform.OS.DARWIN)) {
48 | ServicesDB db = NativeServicesDB.load();
49 | Service s = db.getServiceByPort(48129, "udp");
50 | assertNotNull("could not lookup blp5 service", s);
51 | assertEquals("incorrect port", 48129, s.getPort());
52 | assertEquals("incorrect name", "blp5", s.getName());
53 | }
54 | }
55 |
56 | @Test public void canLookupServiceWithAliasByName() {
57 | ServicesDB db = NativeServicesDB.load();
58 | Service s = db.getServiceByName("comsat", "udp");
59 | assertNotNull("could not lookup comsat/biff service", s);
60 | assertEquals("incorrect port", 512, s.getPort());
61 | assertTrue(s.getName().equals("biff") || s.getName().equals("comsat"));
62 | assertTrue(s.getAliases().contains("biff") || s.getAliases().contains("comsat"));
63 | }
64 |
65 | @Test public void canLookupServiceWithAliasByPort() {
66 | ServicesDB db = NativeServicesDB.load();
67 | Service s = db.getServiceByPort(512, "udp");
68 | assertNotNull("could not lookup comsat/biff service", s);
69 | assertEquals("incorrect port", 512, s.getPort());
70 | assertTrue(s.getName().equals("biff") || s.getName().equals("comsat"));
71 | assertTrue(s.getAliases().contains("biff") || s.getAliases().contains("comsat"));
72 | }
73 |
74 | @Test public void getAllServicesReturnsNonEmptyList() {
75 | ServicesDB db = NativeServicesDB.load();
76 | assertFalse(db.getAllServices().isEmpty());
77 | }
78 |
79 | @Test public void getAllServicesContainsFtp() {
80 | ServicesDB db = NativeServicesDB.load();
81 | boolean ftpFound = false;
82 | for (Service s : db.getAllServices()) {
83 | if (s.getName().equals("ftp") || s.getAliases().contains("ftp")) {
84 | ftpFound = true;
85 | break;
86 | }
87 | }
88 | assertTrue(ftpFound);
89 | }
90 | }
--------------------------------------------------------------------------------
/src/test/java/jnr/netdb/ProtocolTest.java:
--------------------------------------------------------------------------------
1 |
2 | package jnr.netdb;
3 |
4 | import org.junit.After;
5 | import org.junit.AfterClass;
6 | import org.junit.Before;
7 | import org.junit.BeforeClass;
8 | import org.junit.Test;
9 | import static org.junit.Assert.*;
10 |
11 | /**
12 | *
13 | */
14 | public class ProtocolTest {
15 |
16 | public ProtocolTest() {
17 | }
18 |
19 | @BeforeClass
20 | public static void setUpClass() throws Exception {
21 | }
22 |
23 | @AfterClass
24 | public static void tearDownClass() throws Exception {
25 | }
26 |
27 | @Before
28 | public void setUp() {
29 | }
30 |
31 | @After
32 | public void tearDown() {
33 | }
34 |
35 | @Test public void canLookupIpProtocolByName() {
36 | // we try ip first and then ipv4 due to jnr/jnr-netdb#4
37 | Protocol p = Protocol.getProtocolByName("ip");
38 | if (p != null) {
39 | assertEquals("incorrect proto number", 0, p.getProto());
40 | assertEquals("incorrect name", "ip", p.getName());
41 | } else {
42 | p = Protocol.getProtocolByName("ipv4");
43 | assertNotNull("could not lookup ipv4 protocol", p);
44 | assertEquals("incorrect proto number", 4, p.getProto());
45 | assertEquals("incorrect name", "ipv4", p.getName());
46 | }
47 | }
48 |
49 | @Test public void returnsNullOnUnknownProtocol() {
50 | Protocol p = Protocol.getProtocolByName("foo-bar-baz");
51 | assertNull("could not handle unknown protocol", p);
52 | }
53 |
54 | @Test public void canLookupIpProtocolByNumber() {
55 | // we try ip first and then ipv4 due to jnr/jnr-netdb#4
56 | Protocol p = Protocol.getProtocolByName("ip");
57 | if (p != null) {
58 | p = Protocol.getProtocolByNumber(0);
59 | assertEquals("incorrect proto number", 0, p.getProto());
60 | assertEquals("incorrect name", "ip", p.getName());
61 | } else {
62 | p = Protocol.getProtocolByNumber(4);
63 | assertNotNull("could not lookup ip protocol", p);
64 | assertEquals("incorrect proto number", 4, p.getProto());
65 | assertEquals("incorrect name", "ipv4", p.getName());
66 | }
67 | }
68 |
69 | @Test public void returnsNullOnInvalidNumber() {
70 | Protocol p = Protocol.getProtocolByNumber(-1);
71 | assertNull("could not handle invalid number ", p);
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/src/test/java/jnr/netdb/ServiceTest.java:
--------------------------------------------------------------------------------
1 |
2 | package jnr.netdb;
3 |
4 | import org.junit.After;
5 | import org.junit.AfterClass;
6 | import org.junit.Before;
7 | import org.junit.BeforeClass;
8 | import org.junit.Test;
9 | import static org.junit.Assert.*;
10 |
11 | /**
12 | *
13 | */
14 | public class ServiceTest {
15 |
16 | public ServiceTest() {
17 | }
18 |
19 | @BeforeClass
20 | public static void setUpClass() throws Exception {
21 | }
22 |
23 | @AfterClass
24 | public static void tearDownClass() throws Exception {
25 | }
26 |
27 | @Before
28 | public void setUp() {
29 | }
30 |
31 | @After
32 | public void tearDown() {
33 | }
34 |
35 |
36 |
37 | @Test public void canLookupBootpServiceByName() {
38 | Service s = Service.getServiceByName("bootps", "udp");
39 | assertNotNull("could not lookup bootps service", s);
40 | assertEquals("incorrect port", 67, s.getPort());
41 | assertEquals("incorrect name", "bootps", s.getName());
42 | }
43 |
44 | @Test public void canLookupBootpServiceByPort() {
45 | Service s = Service.getServiceByPort(67, "udp");
46 | assertNotNull("could not lookup bootps service", s);
47 | assertEquals("incorrect port", 67, s.getPort());
48 | assertEquals("incorrect name", "bootps", s.getName());
49 | }
50 | }
--------------------------------------------------------------------------------