Wrong reporting/setting of gateway parameters

I’ve been writing a sketch to allow Serial Port changes to the my Arduino ethernet sheild (W5100). I’m trying to set and save IP, MAC, Gateway and Subnet from within the program through the serial port.

I got the IP going and then copied it to a void setSubnet() and setGateway() routines. Once that was done I added code in the loop() to report IP, Subnet and gateway setting as reported from the Arduino Uno at boot. It wrongly reports my subnet mask settings for the gateway settings. I thought it was my sketch, so I made a very simple sketch with the very basics to test the reporting of the gateway settings. It does the same thing. Here is the code followed by the serial output. Any ideas?

#include <SPI.h>
#include <Ethernet.h>
#include <EEPROM.h>

byte mac[] =     { 0x90, 0xA2, 0xDA, 0x0D, 0x32, 0x30 };  //MAC address of Ethernet Shield.
byte ip[]  =     {192, 168, 1, 201}; //static ip to be set before code is compiled
byte gateway[] = {192, 168, 1, 1};  //gateway ip to be set before code is compiled;
byte subnet[]  = {255, 255, 255, 0 };

EthernetServer server(23); // Telnet listens on port 23
EthernetClient client = 0; // Client needs to have global scope so it can be called

void setup()
  Serial.begin(9600); // open the serial port at 9600 bps:
  Ethernet.begin(mac, ip, gateway, subnet);
     Serial.print("Arduino reports:");
     Serial.print("IP Address set to ");
     Serial.print("SubNet MASK set to ");
     Serial.print("Gateway set to ");

void loop()
Arduino reports:
IP Address set to
SubNet MASK set to
Gateway set to

This is incorrect:

Ethernet.begin(mac, ip, gateway, subnet);
// if not using a dns server, set the dns to the gateway like this
Ethernet.begin(mac, ip, gateway, gateway, subnet);