Return TypeFunction nameArguments
hzEcodeInitIpBasic(void)

Declared in file: hzIpaddr.h
Defined in file : hzIpaddr.cpp

Function Logic:

0:START 1:shm_open m_fd 2:m_fd<0 3:Return hzerr(E_OPENFAIL,Could not open deltaIpBaseZone) 4:fstat mmap pRanges 5:!pRanges 6:Return hzerr(E_INITFAIL,Could not map shared memory segment for deltaIpBaseZone. Errno %d\n,errno) 7:shm_open m_fd 8:m_fd<0 9:Return hzerr(E_OPENFAIL,Could not open deltaIpBaseCode) 10:fstat s_IpBasic_max mmap pLocations 11:!pLocations 12:Return hzerr(E_INITFAIL,Shared memory address at %p errno is %d\n,pLocations,errno) 13:s_IpBasic_zones s_IpBasic_codes 14:n 15:s_IpBasic_div s_IpBasic_start 16:Return E_OK

Function body:

hzEcode InitIpBasic (void)
{
   _hzfunc(__func__) ;
   ifstream    is ;
   FSTAT       fs ;
   uint32_t*   pRanges ;
   uint32_t*   pLocations ;
   uint32_t    n ;
   int32_t     m_fd ;
    m_fd = shm_open("deltaIpBaseZone", O_RDONLY, 0);
   if (m_fd < 0)
       return hzerr(E_OPENFAIL, "Could not open deltaIpBaseZone") ;
   threadLog("Opened deltaIpBaseZone\n") ;
   fstat(m_fd, &fs);
   pRanges = (uint32_t*) mmap(0,fs.st_size, PROT_READ, MAP_SHARED, m_fd, 0);
   if (!pRanges)
       return hzerr(E_INITFAIL, "Could not map shared memory segment for deltaIpBaseZone. Errno %d\n", errno) ;
   threadLog("IP ranges size %u mem at %p\n", fs.st_size, pRanges) ;
    m_fd = shm_open("deltaIpBaseCode", O_RDONLY, 0);
   if (m_fd < 0)
       return hzerr(E_OPENFAIL, "Could not open deltaIpBaseCode") ;
   threadLog("Opened deltaIpBaseCode\n") ;
   fstat(m_fd, &fs);
   s_IpBasic_max = fs.st_size ;
   pLocations = (uint32_t*) mmap(0,fs.st_size, PROT_READ, MAP_SHARED, m_fd, 0);
   if (!pLocations)
       return hzerr(E_INITFAIL, "Shared memory address at %p errno is %d\n", pLocations, errno) ;
   threadLog("locations size %u mem at %p\n", fs.st_size, pLocations) ;
   s_IpBasic_zones = pRanges ;
   s_IpBasic_codes = (uchar*) pLocations ;
   for (n = 2; n < s_IpBasic_max ; n *= 2);
   s_IpBasic_div = n / 2;
   s_IpBasic_start = n - 1;
   threadLog("Total ranges %d (div %d start %d)\n\n", s_IpBasic_max, s_IpBasic_div, s_IpBasic_start) ;
   return E_OK ;
}