@(#)ipconfig.8

.Dd March 27, 2013 .Dt IPCONFIG 8 .Os "Mac OS X" .Sh NAME .Nm ipconfig .Nd view and control IP configuration state .Sh SYNOPSIS .Nm .Cm waitall .Nm .Cm getifaddr .Ar interface-name .Nm .Cm ifcount .Nm .Cm getoption .Ar interface-name .Ar (option-name | option-code ) .Nm .Cm getpacket .Ar interface-name .Nm .Cm getv6packet .Ar interface-name .Nm .Cm setverbose .Ar level .Nm .Cm set .Ar interface-name .Cm NONE .Nm .Cm set .Ar interface-name .Cm ( DHCP | BOOTP ) .Nm .Cm set .Ar interface-name .Cm ( MANUAL | INFORM ) .Ar ip-address .Ar subnet-mask .Nm .Cm set .Ar interface-name .Cm NONE-V6 .Nm .Cm set .Ar interface-name .Cm AUTOMATIC-V6 .Nm .Cm set .Ar interface-name .Cm MANUAL-V6 .Ar ipv6-address .Ar prefix-length .Nm .Cm set .Ar interface-name .Cm 6TO4 .Sh DESCRIPTION .Nm is a utility that communicates with the IPConfiguration agent to retrieve and set IP configuration parameters. It should only be used in a test and debug context. Using it for any other purpose is strongly discouraged. Public API's in the SystemConfiguration framework are currently the only supported way to access and control the state of IPConfiguration.

p The IPConfiguration agent is responsible for configuring and managing the IP addresses on direct, connectionless interfaces such as IEEE 802.3 Ethernet and IEEE 1394 FireWire. The IPConfiguration agent is a program bundle that is loaded and executed by the .Xr configd 8 process.

p The IPConfiguration agent implements the client side of the DHCP and BOOTP protocols described in RFC951, RFC1542, RFC2131, and RFC2132. It also assigns and maintains static IP addresses. It may also allocate and assign a link-local IP address if DHCP fails to acquire an IP address.

p In all cases, the IPConfiguration agent performs IP address conflict detection before assigning an IP address to an interface. .Sh "COMMANDS" The .Nm utility provides several commands:

p l -tag -compact t Cm waitall Blocks until all network services have completed configuring, or have timed out in the process of configuring. This is only useful for initial system start-up time synchronization for legacy network services that are incapable of dealing with dynamic network configuration changes.

p t Cm getifaddr Ar interface-name Prints to standard output the IP address for the first network service associated with the given interface. The output will be empty if no service is currently configured or active on the interface.

p t Cm ifcount Prints the number of interfaces that IPConfiguration is capable of configuring. The value that's printed will not change unless relevant network interfaces are either added to or removed from the system.

p t Cm getoption Ar interface-name Ar ( option-name | option-code ) Prints the BOOTP/DHCP option with the given name or option code integer value. See .Xr bootpd 8 for option code names. If an option has multiple values e.g. domain_name_server, only the first value is printed.

p t Cm getpacket Ar interface-name Prints to standard output the DHCP/BOOTP packet that the client accepted from the DHCP/BOOTP server. This command is useful to check what the server provided, and whether the values are sensible. This command outputs nothing if DHCP/BOOTP is not active on the interface, or the attempt to acquire an IP address was unsuccessful.

p t Cm getv6packet Ar interface-name Prints to standard output the latest DHCPv6 packet that the client accepted from the DHCPv6 server. In the case of stateful DHCPv6, it corresponds to the last packet from the server that contained addressing information. This command is useful to check what the server provided, and whether the values are sensible. This command outputs nothing if DHCPv6 is not active on the interface.

p t Cm set Ar interface-name Cm NONE t Cm set Ar interface-name Cm ( DHCP | BOOTP ) t Cm set Ar interface-name Cm ( MANUAL | INFORM ) Ar ip-address Ar subnet-mask t Cm set Ar interface-name Cm NONE-V6 t Cm set Ar interface-name Cm AUTOMATIC-V6 t Cm set Ar interface-name Cm MANUAL-V6 Ar ipv6-address Ar prefix-length t Cm set Ar interface-name Cm 6TO4 Sets the interface to have a new temporary network service of the given type. Any existing services on the interface for the particular protocol (IPv4 or IPv6) are first de-configured before the new service is instantiated.

p If NONE is specified, all existing IPv4 services are de-configured. If NONE-V6 is specified, all existing IPv6 services are de-configured.

p DHCP and BOOTP require no additional arguments. The IP address, subnet mask, router, and DNS information are retrieved automatically.

p Both MANUAL and INFORM require the specification of an IP address .Ar ip-address and a subnet mask .Ar subnet-mask .

p The INFORM service configures the IP address statically like MANUAL, but then broadcasts DHCP INFORM packets to retrieve DHCP option information. If the DHCP server responds and supplies a subnet mask, that subnet mask is used instead of the specified .Ar subnet-mask .

p AUTOMATIC-V6 requires no additional arguments. The IPv6 address, prefix length and router are retrieved automatically.

p MANUAL-V6 requires the specification of the IPv6 address .Ar ipv6-address and a prefix length .Ar prefix-length .

p 6TO4 only works on Six To Four (IFT_STF) interfaces e.g. stf0. If it is specified on a non-IFT_STF interface, it has the same effect as specifying NONE-V6.

p The set command requires root privileges.

p Note: The set command is very useful for debugging, but it can't be used to configure a persistent service. The temporary services that are created only remain until the next network configuration change occurs. See .Xr scselect 8 .

p t Cm setverbose Ar level Enables or disables verbose mode logging in the IPConfiguration agent. Specify a .Ar level value of .Cm 0 to disable verbose logging, the default. Specify a value of .Cm 1 to enable verbose logging. This setting is persistent across boots of the operating system.

p When enabled, verbose log files are generated in the directory /Library/Logs/CrashReporter. The filenames follow the naming convention com.apple.networking.IPConfiguration.log.<timestamp>.

p The setverbose command requires root privileges. .El .Sh "EXAMPLES"

# ipconfig getpacket en0
op = BOOTREPLY
htype = 1
dp_flags = 0
hlen = 6
hops = 0
xid = 1956115059
secs = 0
ciaddr = 0.0.0.0
yiaddr = 192.168.4.10
siaddr = 192.168.4.1
giaddr = 0.0.0.0
chaddr = 0:3:93:7a:d7:5c
sname = dhcp.mycompany.net
file = 
options:
Options count is 10
dhcp_message_type (uint8): ACK 0x5
server_identifier (ip): 192.168.4.1
lease_time (uint32): 0x164a
subnet_mask (ip): 255.255.255.0
router (ip_mult): {192.168.4.1}
domain_name_server (ip_mult): {192.168.4.1}
domain_name (string): mycompany.net
end (none): 

p

# ipconfig getoption en0 router
192.168.4.1
.Sh "SEE ALSO" .Lp .Xr configd 8 , .Xr bootpd 8 , .Xr scselect 8 .Sh "HISTORY"

p The .Nm command first appeared in Mac OS X Version 10.0 Public Beta.