[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[tyndur-devel] [PATCH 2/3] libc: POSIX: getprotobyname()



+ libc: POSIX: getprotobyname()

Signed-off-by: Kevin Wolf <kevin@xxxxxxxxxx>
---
 src/modules/include/netdb.h |   14 ++++++++++++++
 src/modules/lib/posix/net.c |   26 ++++++++++++++++++++++++++
 2 files changed, 40 insertions(+), 0 deletions(-)

diff --git a/src/modules/include/netdb.h b/src/modules/include/netdb.h
index 12e6e9a..5fb2747 100644
--- a/src/modules/include/netdb.h
+++ b/src/modules/include/netdb.h
@@ -49,6 +49,12 @@ struct servent {
 
 };
 
+struct protoent {
+    char*   p_name;
+    char**  p_aliases;
+    int     p_proto;
+};
+
 struct hostent* gethostbyname(const char* name);
 
 /**
@@ -61,5 +67,13 @@ struct hostent* gethostbyname(const char* name);
  */
 struct servent* getservbyname(const char* name, const char* protocol);
 
+/**
+ * Gibt Informationen zu einem Netzwerkprotokoll zurueck. Wenn das Protokoll
+ * nicht gefunden werden kann, wird NULL zurueckgegeben.
+ *
+ * @param name Name des Protokolls (z.B. "tcp")
+ */
+struct protoent* getprotobyname(const char* name);
+
 #endif
 
diff --git a/src/modules/lib/posix/net.c b/src/modules/lib/posix/net.c
index 0b335a8..4832d29 100644
--- a/src/modules/lib/posix/net.c
+++ b/src/modules/lib/posix/net.c
@@ -155,3 +155,29 @@ struct servent* getservbyname(const char* name, const char* protocol)
 
     return NULL;
 }
+
+/* Definition der bekannten Netzwerkprotokolle */
+static char* proto_aliases_tcp[] = { "tcp", NULL };
+
+static struct protoent protocols[] = {
+    { "tcp",      proto_aliases_tcp,   6 },
+    { NULL, NULL, 0 }
+};
+
+/**
+ * Gibt Informationen zu einem Netzwerkprotokoll zurueck. Wenn das Protokoll
+ * nicht gefunden werden kann, wird NULL zurueckgegeben.
+ *
+ * @param name Name des Protokolls (z.B. "tcp")
+ */
+struct protoent* getprotobyname(const char* name)
+{
+    int i;
+    for (i = 0; protocols[i].p_name != NULL; i++) {
+        if (!strcmp(name, protocols[i].p_name)) {
+            return &protocols[i];
+        }
+    }
+
+    return NULL;
+}
-- 
1.6.0.2