net_helpers.c File Reference

#include <rsbac/types.h>

Go to the source code of this file.

Functions

__u32 rsbac_net_make_mask_u32 (__u8 bits)


Function Documentation

__u32 rsbac_net_make_mask_u32 __u8  bits  ) 
 

Definition at line 14 of file net_helpers.c.

00015   {
00016     __u32 res;
00017     __u8 res0 = 0;
00018     __u8 res1 = 0;
00019     __u8 res2 = 0;
00020     __u8 res3 = 0;
00021     int i;
00022 
00023     if(bits >=32)
00024       return (__u32) -1;
00025     if(!bits)
00026       return 0;
00027     if(bits >= 24)
00028       {
00029         bits -= 24;
00030         res0 = 255;
00031         res1 = 255;
00032         res2 = 255;
00033         for(i=0; i<bits; i++)
00034           res3 |= 1 << (7-i);
00035       }
00036     else
00037     if(bits >= 16)
00038       {
00039         bits -= 16;
00040         res0 = 255;
00041         res1 = 255;
00042         res3 = 0;
00043         for(i=0; i<bits; i++)
00044           res2 |= 1 << (7-i);
00045       }
00046     else
00047     if(bits >= 8)
00048       {
00049         bits -= 8;
00050         res0 = 255;
00051         res2 = 0;
00052         res3 = 0;
00053         for(i=0; i<bits; i++)
00054           res1 |= 1 << (7-i);
00055       }
00056     else
00057       {
00058         res1 = 0;
00059         res2 = 0;
00060         res3 = 0;
00061         for(i=0; i<bits; i++)
00062           res0 |= 1 << (7-i);
00063       }
00064     res = (res3 << 24) | (res2 << 16) | (res1 << 8) | res0;
00065     return res;
00066   }


Generated on Thu Sep 22 16:42:32 2005 for RSBAC by  doxygen 1.4.2