- unsigned char bi_enetaddr[6];
- int reg;
- char *e,*s;
- char tmp[64];
- ulong tst1, tst2, sum, m_mask, m_value = 0;
-
- if (BootpTry ==0) {
- /* get our mac */
- reg = getenv_r ("ethaddr", tmp, sizeof(tmp));
- s = (reg > 0) ? tmp : NULL;
-
- for (reg=0; reg<6; ++reg) {
- bi_enetaddr[reg] = s ? simple_strtoul(s, &e, 16) : 0;
- if (s) {
- s = (*e) ? e+1 : e;
- }
- }
-#ifdef DEBUG
- puts ("BootpRequest => Our Mac: ");
- for (reg=0; reg<6; reg++) {
- printf ("%x%c",
- bi_enetaddr[reg],
- reg==5 ? '\n' : ':');
- }
-#endif /* DEBUG */
-
- /* Mac-Manipulation 2 get seed1 */
- tst1=0;
- tst2=0;
- for (reg=2; reg<6; reg++) {
- tst1 = tst1 << 8;
- tst1 = tst1 | bi_enetaddr[reg];
- }
- for (reg=0; reg<2; reg++) {
- tst2 = tst2 | bi_enetaddr[reg];
- tst2 = tst2 << 8;
- }
-
- seed1 = tst1^tst2;
-
- /* Mirror seed1*/
- m_mask=0x1;
- for (reg=1;reg<=32;reg++) {
- m_value |= (m_mask & seed1);
- seed1 = seed1 >> 1;
- m_value = m_value << 1;
- }
- seed1 = m_value;
- seed2 = 0xB78D0945;
- }
-
- /* Random Number Generator */
-
- for (reg=0;reg<=0;reg++) {
- sum = seed1 + seed2;
- if (sum < seed1 || sum < seed2)
- sum++;
- seed2 = seed1;
- seed1 = sum;