*** empty log message ***
authorpenk
Mon, 14 Mar 2005 15:27:17 +0100
changeset 8784 7e0ca6e28ad8
parent 8783 41f53c93fb79
child 8785 b042196465e3
*** empty log message ***
AbstractOperatingSystem.st
--- a/AbstractOperatingSystem.st	Fri Mar 11 13:50:04 2005 +0100
+++ b/AbstractOperatingSystem.st	Mon Mar 14 15:27:17 2005 +0100
@@ -171,7 +171,7 @@
 initResources
     "/ allow for ResourcePack class to be missing (non-GUI smalltalks)
     ResourcePack notNil ifTrue:[
-        Resources := ResourcePack forPackage:(self package).
+	Resources := ResourcePack forPackage:(self package).
     ]
 !
 
@@ -4014,6 +4014,10 @@
     else if ((aSymbolOrInteger == @symbol(AF_ISO)) || (aSymbolOrInteger == @symbol(iso)))
        domainCode = __MKSMALLINT(AF_ISO);
 #endif
+#ifdef AF_ECMA
+    else if (aSymbolOrInteger == @symbol(AF_ECMA))
+       domainCode = __MKSMALLINT(AF_ECMA);
+#endif
 #ifdef AF_NETBIOS
     else if ((aSymbolOrInteger == @symbol(AF_NETBIOS)) || (aSymbolOrInteger == @symbol(netbios)))
        domainCode = __MKSMALLINT(AF_NETBIOS);
@@ -4098,6 +4102,10 @@
     else if (aSymbolOrInteger == @symbol(AF_IMPLINK))
        domainCode = __MKSMALLINT(AF_IMPLINK);
 #endif
+#ifdef AF_PUP
+    else if (aSymbolOrInteger == @symbol(AF_PUP))
+       domainCode = __MKSMALLINT(AF_PUP);
+#endif
 #ifdef AF_CHAOS
     else if (aSymbolOrInteger == @symbol(AF_CHAOS))
        domainCode = __MKSMALLINT(AF_CHAOS);
@@ -4210,6 +4218,11 @@
 	    domainSymbol = @symbol(AF_ISO);
 	    break;
 #endif
+#ifdef AF_ECMA
+	case AF_ECMA:
+	    domainSymbol = @symbol(AF_ECMA);
+	    break;
+#endif
 #ifdef AF_NETBIOS
 	case AF_NETBIOS:
 	    domainSymbol = @symbol(AF_NETBIOS);
@@ -4310,6 +4323,11 @@
 	    domainSymbol = @symbol(AF_IMPLINK);
 	    break;
 #endif
+#ifdef AF_PUP
+	case AF_PUP:
+	    domainSymbol = @symbol(AF_PUP);
+	    break;
+#endif
 #ifdef AF_CHAOS
 	case AF_CHAOS:
 	    domainSymbol = @symbol(AF_CHAOS);
@@ -4366,6 +4384,153 @@
     "
 !
 
+protocolCodeOf:aSymbolOrInteger
+    "return the numeric IPPROTO_xxx code of a given symbolic protocol name.
+     Return nil for invalid or unsupported protocols.
+     For backward compatibility, the obsolete (non-IPPROTO-prefixed) names
+     are still supported for a while - this support will vanish."
+
+    |protocolCode|
+
+%{  /*NOCONTEXT*/
+
+    if (__isSmallInteger(aSymbolOrInteger) || aSymbolOrInteger == nil) {
+	RETURN (aSymbolOrInteger);
+    }
+
+#ifdef IPPROTO_IP
+    else if ((aSymbolOrInteger == @symbol(IPPROTO_IP)) || (aSymbolOrInteger == @symbol(ip)))
+       protocolCode = __MKSMALLINT(IPPROTO_IP);
+#endif
+#ifdef IPPROTO_ICMP
+    else if ((aSymbolOrInteger == @symbol(IPPROTO_ICMP)) || (aSymbolOrInteger == @symbol(icmp)))
+       protocolCode = __MKSMALLINT(IPPROTO_ICMP);
+#endif
+#ifdef IPPROTO_IGMP
+    else if ((aSymbolOrInteger == @symbol(IPPROTO_IGMP)) || (aSymbolOrInteger == @symbol(igmp)))
+       protocolCode = __MKSMALLINT(IPPROTO_IGMP);
+#endif
+#ifdef IPPROTO_GGP
+    else if ((aSymbolOrInteger == @symbol(IPPROTO_GGP)) || (aSymbolOrInteger == @symbol(ggp)))
+       protocolCode = __MKSMALLINT(IPPROTO_GGP);
+#endif
+#ifdef IPPROTO_TCP
+    else if ((aSymbolOrInteger == @symbol(IPPROTO_TCP)) || (aSymbolOrInteger == @symbol(tcp)))
+       protocolCode = __MKSMALLINT(IPPROTO_TCP);
+#endif
+#ifdef IPPROTO_UDP
+    else if ((aSymbolOrInteger == @symbol(IPPROTO_UDP)) || (aSymbolOrInteger == @symbol(udp)))
+       protocolCode = __MKSMALLINT(IPPROTO_UDP);
+#endif
+#ifdef IPPROTO_IDP
+    else if ((aSymbolOrInteger == @symbol(IPPROTO_IDP)) || (aSymbolOrInteger == @symbol(idp)))
+       protocolCode = __MKSMALLINT(IPPROTO_IDP);
+#endif
+#ifdef IPPROTO_ND
+    else if ((aSymbolOrInteger == @symbol(IPPROTO_ND)) || (aSymbolOrInteger == @symbol(nd)))
+       protocolCode = __MKSMALLINT(IPPROTO_ND);
+#endif
+#ifdef IPPROTO_RAW
+    else if ((aSymbolOrInteger == @symbol(IPPROTO_RAW)) || (aSymbolOrInteger == @symbol(raw)))
+       protocolCode = __MKSMALLINT(IPPROTO_RAW);
+#endif
+%}.
+
+    ^ protocolCode.
+
+    "
+     self protocolCodeOf:#IPPROTO_UDP
+     self protocolCodeOf:#IPPROTO_TCP
+    "
+    "for backward compatibility only:
+     self protocolCodeOf:#udp
+     self protocolCodeOf:#tcp
+    "
+!
+
+protocolSymbolOf:anInteger
+    "return the symbolic protocolName of a given numeric IPPROTO_xxx code.
+     Return nil for invalid or unsupported protocols."
+
+    |protocolSymbol|
+
+%{ /*NOCONTEXT*/
+
+    if (__isSmallInteger(anInteger)) {
+	switch(__intVal(anInteger)) {
+#ifdef IPPROTO_IP
+	case IPPROTO_IP:
+	    // protocolSymbol = @symbol(IPPROTO_IP);
+	    protocolSymbol = @symbol(ip);
+	    break;
+#endif
+#ifdef IPPROTO_ICMP
+	case IPPROTO_ICMP:
+	    // protocolSymbol = @symbol(IPPROTO_ICMP);
+	    protocolSymbol = @symbol(icmp);
+	    break;
+#endif
+#ifdef IPPROTO_IGMP
+	case IPPROTO_IGMP:
+	    // protocolSymbol = @symbol(IPPROTO_IGMP);
+	    protocolSymbol = @symbol(igmp);
+	    break;
+#endif
+#ifdef IPPROTO_GGP
+	case IPPROTO_GGP:
+	    // protocolSymbol = @symbol(IPPROTO_GGP);
+	    protocolSymbol = @symbol(ggp);
+	    break;
+#endif
+#ifdef IPPROTO_TCP
+	case IPPROTO_TCP:
+	    // protocolSymbol = @symbol(IPPROTO_TCP);
+	    protocolSymbol = @symbol(tcp);
+	    break;
+#endif
+#ifdef IPPROTO_PUP
+	case IPPROTO_PUP:
+	    // protocolSymbol = @symbol(IPPROTO_PUP);
+	    protocolSymbol = @symbol(pup);
+	    break;
+#endif
+#ifdef IPPROTO_UDP
+	case IPPROTO_UDP:
+	    // protocolSymbol = @symbol(IPPROTO_UDP);
+	    protocolSymbol = @symbol(udp);
+	    break;
+#endif
+#ifdef IPPROTO_IDP
+	case IPPROTO_IDP:
+	    // protocolSymbol = @symbol(IPPROTO_IDP);
+	    protocolSymbol = @symbol(idp);
+	    break;
+#endif
+#ifdef IPPROTO_ND
+	case IPPROTO_ND:
+	    // protocolSymbol = @symbol(IPPROTO_ND);
+	    protocolSymbol = @symbol(nd);
+	    break;
+#endif
+#ifdef IPPROTO_RAW
+	case IPPROTO_RAW:
+	    // protocolSymbol = @symbol(IPPROTO_RAW);
+	    protocolSymbol = @symbol(raw);
+	    break;
+#endif
+	}
+    }
+%}.
+
+    ^ protocolSymbol.
+
+    "
+     self protocolSymbolOf:(self protocolCodeOf:#tcp)
+     self protocolSymbolOf:(self protocolCodeOf:#udp)
+     self protocolSymbolOf:(self protocolCodeOf:#raw)
+    "
+!
+
 socketAddressSizeOfDomain:aSymbolOrInteger
     "Return the os-specific size of a socket address for a domain aSymbolOrInteger.
      Return nil, if unknown or unsupported."
@@ -4427,6 +4592,13 @@
 		socketSize = __MKSMALLINT( sizeof(struct sockaddr_iso) );
 		break;
 #endif
+#ifdef AF_ECMA
+# if 0
+	    case AF_ECMA:
+		socketSize = __MKSMALLINT( sizeof(struct sockaddr_ecma) );
+		break;
+# endif
+#endif
 #ifdef AF_NETBIOS
 	    case AF_NETBIOS:
 		socketSize = __MKSMALLINT( sizeof(struct sockaddr_netbios) );
@@ -4522,6 +4694,13 @@
 		socketSize = __MKSMALLINT( sizeof(struct sockaddr_implink) );
 		break;
 #endif
+#ifdef AF_PUP
+# if 0
+	    case AF_PUP:
+		socketSize = __MKSMALLINT( sizeof(struct sockaddr_pup) );
+		break;
+# endif
+#endif
 #ifdef AF_CHAOS
 	    case AF_CHAOS:
 		socketSize = __MKSMALLINT( sizeof(struct sockaddr_chaos) );
@@ -4685,6 +4864,7 @@
 	#AF_SNA
 	#AF_RAW
 	#AF_ISO
+	#AF_ECMA
 	#AF_NETBIOS     #netbios
 	#AF_IPX
 	#AF_AX25
@@ -4694,6 +4874,7 @@
 	#AF_ROSE
 	#AF_IRDA        #irda
 	#AF_NETLINK
+	#AF_NETLINK
 	#AF_NETBEUI
 	#AF_ATM
 	#AF_ATMPVC
@@ -4702,6 +4883,7 @@
 	#AF_VOICEVIEW
 	#AF_ECONET
 	#AF_IMPLINK
+	#AF_PUP
 	#AF_CHAOS
 	#AF_DLI
 	#AF_LAT
@@ -5590,7 +5772,7 @@
 !AbstractOperatingSystem class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/AbstractOperatingSystem.st,v 1.139 2005-01-26 17:40:49 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/AbstractOperatingSystem.st,v 1.140 2005-03-14 14:27:17 penk Exp $'
 ! !
 
 AbstractOperatingSystem initialize!