Is there any way to confirm that ethernet.begin() has succeeded?

When you invoke ethernet.begin() in a typical fashion with a MAC address and a static IP address, is there any way for the Arduino code to know that function has succeeded, and that the Arduino board how successfully has that IP address and is on the local network? If your sketch then tries a client.connect() and it fails, is there any way to get more specific information on WHY it failed? Server not found? netmask and/or gateway wrong, so the request never made it out of the local network? ethernet cable not plugged in? When it doesn't work I would love to get a bit more information on WHY it didn't work, if possible.

void EthernetClass::begin(uint8_t *mac, uint8_t *ip, uint8_t *gateway, uint8_t *subnet)
{
  W5100.init();
  W5100.setMACAddress(mac);
  W5100.setIPAddress(ip);
  W5100.setGatewayIp(gateway);
  W5100.setSubnetMask(subnet);
}

I think this pretty much answers your question.

You are free to look at the other functions, too, to see if there is any more information that the function/class knows but isn't telling. If so, you can see if there are ways to get that information, or change the functions to cough up the information.

If your arduino is connected to a router, you might look in the router setup to see if the arduino is displayed as a connected device.

Yeah, that I can do. Or I can just ping the ip address of the Arduino, but I was looking for ways for the Arduino to diagnose itself, on the assumption that there would be no way to check the router or have another device (such as a laptop) on the network. (The Arduino is going to be plugged blind into a network at a remote location).

Let the Arduino do a ping to the IP address of the router you configged...

an old link might help - http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1275454878 -

Hmm, interesting. Thanks!