Connected: An Internet Encyclopedia
RFC 950 - 2.2. Changes to Host Software to Support Subnets

Top: Connected: An Internet Encyclopedia
Up: Requests For Comments
Up: RFC 950
Up: 2. Standards for Subnet Addressing
Prev: 2.1. Interpretation of Internet Addresses
Next: 2.3. Finding the Address Mask

### 2.2. Changes to Host Software to Support Subnets

In most implementations of IP, there is code in the module that handles outgoing datagrams to decide if a datagram can be sent directly to the destination on the local network or if it must be sent to a gateway.

Generally the code is something like this:

             IF ip_net_number(dg.ip_dest) = ip_net_number(my_ip_addr)
                 THEN
                     send_dg_locally(dg, dg.ip_dest)
                 ELSE
                     send_dg_locally(dg,
                                      gateway_to(ip_net_number(dg.ip_dest)))

(If the code supports multiply-connected networks, it will be more complicated, but this is irrelevant to the current discussion.)

To support subnets, it is necessary to store one more 32-bit quantity, called my_ip_mask. This is a bit-mask with bits set in the fields corresponding to the IP network number, and additional bits set corresponding to the subnet number field.

The code then becomes:

             IF bitwise_and(dg.ip_dest, my_ip_mask)
                                       = bitwise_and(my_ip_addr, my_ip_mask)
                 THEN
                     send_dg_locally(dg, dg.ip_dest)
                 ELSE
                     send_dg_locally(dg,
                            gateway_to(bitwise_and(dg.ip_dest, my_ip_mask)))

Of course, part of the expression in the conditional can be pre-computed.

It may or may not be necessary to modify the "gateway_to" function, so that it too takes the subnet field bits into account when performing comparisons.

To support multiply-connected hosts, the code can be changed to keep the "my_ip_addr" and "my_ip_mask" quantities on a per-interface basis; the expression in the conditional must then be evaluated for each interface.

Next: 2.3. Finding the Address Mask

Connected: An Internet Encyclopedia
RFC 950 - 2.2. Changes to Host Software to Support Subnets