orm@doc-tcpip.org

Erstellt: August 2000 - Letzte Modifikation: November 2001

[ Main | Local ]


Zusammenhang zwischen ODM und den Devices

In der ODM steht, das mein Adapter gestoppt ist, ich kann aber noch pingen!

Interessantes zur ODM und den Informationen aus ihr

Ich habe mein Interface en0 mit dem SMIT (smit tcpip) konfiguriert. Dabei war ich faul und habe nur eine Adresse, einen Hostnamen und eine Netzmaske vergeben (also kein Gateway etc.)

Das sieht dann so aus:

#ifconfig  en0
en0: flags=e080863
inet 192.168.1.4 netmask 0xffffff00 broadcast 192.168.1.255
Jetzt schaue ich mir mit lsattr die in der ODM abgelegten, aktuellen Attribute an:
#lsattr -El en0
mtu           1500          Maximum IP Packet Size for This Device     True
remmtu        576           Maximum IP Packet Size for REMOTE Networks True
netaddr       192.168.1.4   Internet Address                           True
state         up            Current Interface Status                   True
arp           on            Address Resolution Protocol (ARP)          True
netmask       255.255.255.0 Subnet Mask                                True
security      none          Security Level                             True
authority                   Authorized Users                           True
broadcast                   Broadcast Address                          True
netaddr6                    N/A                                        True
alias6                      N/A                                        True
prefixlen                   N/A                                        True
alias4                      N/A                                        True
rfc1323                     N/A                                        True
tcp_nodelay                 N/A                                        True
tcp_sendspace               N/A                                        True
tcp_recvspace               N/A                                        True
tcp_mssdflt                 N/A                                        True
Der Adapter ist available:
# lsdev -Cc adapter
sa0    Available 01-C0 Standard I/O Serial Port 1
sa1    Available 01-D0 Standard I/O Serial Port 2
sioka0 Available 01-F0 Keyboard Adapter
sioma0 Available 01-G0 Mouse Adapter
fda0   Available 01-H0 Standard I/O Diskette Adapter
pmc0   Available 01-I0 Power Management Controller
scsi0  Available 04-C0 Wide SCSI I/O Controller
iga0   Available 04-01 GXT110P Graphics Adapter
siota0 Available 01-A0 Tablet Adapter
ppa0   Available 01-B0 Standard I/O Parallel Port Adapter
paud0  Available 01-E0 Ultimedia Integrated Audio
tok0   Available 04-05 IBM PCI Tokenring Adapter (14101800)
ent0   Available 04-B0 IBM PCI Ethernet Adapter (22100020)
ent1   Available 04-04 IBM PCI Ethernet Adapter (22100020)
Und das Interface auch (das müßte nicht so sein: Ich kann, wenn der Adapter, also die Hardware (entX, tokX), da ist, das Interface mit ifconfig konfigurieren, also an der ODM aussen vorbeilaufen. Dann funktioniert alles prima, nur mein Interface en0 ist nur defined und der State ist down....).
# lsdev -Cc if
et0 Defined    IEEE 802.3 Ethernet Network Interface
et1 Defined    IEEE 802.3 Ethernet Network Interface
lo0 Available  Loopback Network Interface
tr0 Available  Token Ring Network Interface
en0 Available  Standard Ethernet Network Interface
en1 Defined    Standard Ethernet Network Interface
Was steht jetzt in der ODM? Wir schauen nur in die Datenbanken, die wir verändern (Customizing). In der CuAt (Customized Attributes) finden sich Einträge wie die Adresse, Netzmaske und der Status des Interfaces: (Hier stehen keine Routen. Die Interface-Route wird unter AIX automatisch angelegt bzw. gehört zur Interface Datenstruktur dazu. Weitere statische Routen werden in den inet0-Objektklassen abgelegt.)
# odmget CuAt|grep -p en0
CuAt:
name = "en0"
attribute = "netaddr"
value = "192.168.1.4"
type = "R"
generic = "DU"
rep = "s"
nls_index = 4

CuAt:
name = "en0"
attribute = "netmask"
value = "255.255.255.0"
type = "R"
generic = "DU"
rep = "s"
nls_index = 8

CuAt:
name = "en0"
attribute = "state"
value = "up"
type = "R"
generic = "DU"
rep = "sl"
nls_index = 5
Die Information, die sich auf den Treiber bezieht (oder, korrekter, auf das Eltern-Device, also wo ist das Interface eingehängt?) bekommt man aus der Objektklasse CuDv (Customized Devices). Die Status-Information korrespondiert mit der Information in CuAt, Attribut "state": eine 1 ist up. Korrespondiert heißt aber nicht, das diese Werte miteinander verknüpft sind - man kann sie einzeln ändern und sich so Probleme schaffen. Weiter findet man das Eltern-Device (inet0) und den Treiber, in diesem Fall eine Kernel-Extension: if_en.
#odmget CuDv|grep -p en0
CuDv:
name = "en0"
status = 1
chgstatus = 1
ddins = "if_en"
location = ""
parent = "inet0"
connwhere = ""
PdDvLn = "if/EN/en"
Jetzt setze ich mit dem chdev-Kommando den Status des Interfaces auf down, und zwar mit dem Flag -P, es soll also nur in die ODM geschrieben werden (das Device als solches wird also nicht informiert bzw. geändert).
# chdev -l en0 -a state=down -P
en0 changed
Mit dem ifconfig-Kommando ist alles noch in Ordnung, und sowohl Interface wie auch Adapter funktionieren einwandfrei. Schließlich ist es ihnen herzlich egal, was in der ODM steht.
# ifconfig en0
en0: flags=e080863
inet 192.168.1.4 netmask 0xffffff00 broadcast 192.168.1.255
Das lsattr-Kommando sieht das genau umgekehrt: Hier ist es egal, was wirklich in den Datenstrukturen von Adapter oder Interface steht. So ist unser Adapter down - auch wenn wir das erst nach dem nächsten Reboot merken würden. Oder wenn man den cfgmgr laufen läßt. Das Interface würde dann als Stopped erscheinen, der Status in der CuDv wäre 2. (Schließlich ist ja was definiert für das Interface, nur ist es down gesetzt. Daher schließt das System, das es gestoppt ist).
# lsattr -El en0
mtu           1500          Maximum IP Packet Size for This Device     True
remmtu        576           Maximum IP Packet Size for REMOTE Networks True
netaddr       192.168.1.4   Internet Address                           True
state         down          Current Interface Status                   True
arp           on            Address Resolution Protocol (ARP)          True
netmask       255.255.255.0 Subnet Mask                                True
security      none          Security Level                             True
authority                   Authorized Users                           True
broadcast                   Broadcast Address                          True
netaddr6                    N/A                                        True
alias6                      N/A                                        True
prefixlen                   N/A                                        True
alias4                      N/A                                        True
rfc1323                     N/A                                        True
tcp_nodelay                 N/A                                        True
tcp_sendspace               N/A                                        True
tcp_recvspace               N/A                                        True
tcp_mssdflt                 N/A                                        True
Und das Interface ist auch in den Status Defined gesetzt.
# lsdev -Cc if
et0 Defined    IEEE 802.3 Ethernet Network Interface
et1 Defined    IEEE 802.3 Ethernet Network Interface
lo0 Available  Loopback Network Interface
tr0 Available  Token Ring Network Interface
en0 Defined    Standard Ethernet Network Interface
en1 Defined    Standard Ethernet Network Interface
Bei den Customized Attributes fehlt der Eintrag für das Attribute State - der Default ist schließlich down, und nur eine Änderung zum Default wird in die CuAt eingetragen.
# odmget CuAt|grep -p en0
CuAt:
name = "en0"
attribute = "netaddr"
value = "192.168.1.4"
type = "R"
generic = "DU"
rep = "s"
nls_index = 4

CuAt:
name = "en0"
attribute = "netmask"
value = "255.255.255.0"
type = "R"
generic = "DU"
rep = "s"
nls_index = 8
In der CuDv sehen wir, das der Treiber auf down steht: Der Status ist 0, statt 1.
# odmget CuDv|grep -p en0
CuDv:
name = "en0"
status = 0
chgstatus = 1
ddins = "if_en"
location = ""
parent = "inet0"
connwhere = ""
PdDvLn = "if/EN/en"
Und damit mir alle glauben hole ich das Device jetzt wieder hoch. Nochmal: zu keinem Zeitpunkt hat der Adapter oder das Interface aufgehört zu funktionieren. Ich habe nur die ODM manipuliert; solche Änderungen würde ich erst nach Reboot oder cfgmgr merken.
# chdev -l en0 -a state=up -P
en0 changed
# lsdev -Cc if
et0 Defined    IEEE 802.3 Ethernet Network Interface
et1 Defined    IEEE 802.3 Ethernet Network Interface
lo0 Available  Loopback Network Interface
tr0 Available  Token Ring Network Interface
en0 Available  Standard Ethernet Network Interface
en1 Defined    Standard Ethernet Network Interface
Und hier zu guter Letzt die Standard-Einstellungen für das Interface:
# lsattr -Dl en0
mtu           1500 Maximum IP Packet Size for This Device     True
remmtu        576  Maximum IP Packet Size for REMOTE Networks True
netaddr            Internet Address                           True
state         down Current Interface Status                   True
arp           on   Address Resolution Protocol (ARP)          True
netmask            Subnet Mask                                True
security      none Security Level                             True
authority          Authorized Users                           True
broadcast          Broadcast Address                          True
netaddr6           N/A                                        True
alias6             N/A                                        True
prefixlen          N/A                                        True
alias4             N/A                                        True
rfc1323            N/A                                        True
tcp_nodelay        N/A                                        True
tcp_sendspace      N/A                                        True
tcp_recvspace      N/A                                        True
tcp_mssdflt        N/A                                        True


[ Main | Local ]

[ Allgemein | UNIX | AIX | TCP-IP | TCP | ROUTING | DNS | NTP | NFS | FreeBSD | Linux | SMTP | Tracing | GPS ]

Copyright 2001-2014 by Orm Hager - Es gilt die GPL
Feedback bitte an: Orm Hager (orm@doc-tcpip.org )