/*
 * COPYRIGHT:   See COPYING in the top level directory
 * PROJECT:     ReactOS DNS Shared Library
 * FILE:        lib/dnslib/addr.c
 * PURPOSE:     Contains the Address Family Information Tables
 */

/* INCLUDES ******************************************************************/
#include "precomp.h"

/* DATA **********************************************************************/

DNS_FAMILY_INFO AddrFamilyTable[3] =
{
    {
        AF_INET,
        DNS_TYPE_A,
        sizeof(IP4_ADDRESS),
        sizeof(SOCKADDR_IN),
        FIELD_OFFSET(SOCKADDR_IN, sin_addr)
    },
    {
        AF_INET6,
        DNS_TYPE_AAAA,
        sizeof(IP6_ADDRESS),
        sizeof(SOCKADDR_IN6),
        FIELD_OFFSET(SOCKADDR_IN6, sin6_addr)
    },
    {
        AF_ATM,
        DNS_TYPE_ATMA,
        sizeof(ATM_ADDRESS),
        sizeof(SOCKADDR_ATM),
        FIELD_OFFSET(SOCKADDR_ATM, satm_number)
    }
};

/* FUNCTIONS *****************************************************************/

PDNS_FAMILY_INFO
WINAPI
FamilyInfo_GetForFamily(IN WORD AddressFamily)
{
    /* Check which family this is */
    switch (AddressFamily)
    {
        case AF_INET:
            /* Return IPv4 Family Info */
            return &AddrFamilyTable[0];
        
        case AF_INET6:
            /* Return IPv6 Family Info */
            return &AddrFamilyTable[1];
        
        case AF_ATM:
            /* Return ATM Family Info */
            return &AddrFamilyTable[2];
        
        default:
            /* Invalid family */
            return NULL;
    }

}