Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2) #define MPPE_PAD                4      /* MPPE growth per frame */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3) #define MPPE_MAX_KEY_LEN       16      /* largest key length (128-bit) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5) /* option bits for ccp_options.mppe */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6) #define MPPE_OPT_40            0x01    /* 40 bit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7) #define MPPE_OPT_128           0x02    /* 128 bit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) #define MPPE_OPT_STATEFUL      0x04    /* stateful mode */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) /* unsupported opts */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #define MPPE_OPT_56            0x08    /* 56 bit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #define MPPE_OPT_MPPC          0x10    /* MPPC compression */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #define MPPE_OPT_D             0x20    /* Unknown */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #define MPPE_OPT_UNSUPPORTED (MPPE_OPT_56|MPPE_OPT_MPPC|MPPE_OPT_D)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #define MPPE_OPT_UNKNOWN       0x40    /* Bits !defined in RFC 3078 were set */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)  * This is not nice ... the alternative is a bitfield struct though.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)  * And unfortunately, we cannot share the same bits for the option
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)  * names above since C and H are the same bit.  We could do a u_int32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)  * but then we have to do a htonl() all the time and/or we still need
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)  * to know which octet is which.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) #define MPPE_C_BIT             0x01    /* MPPC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) #define MPPE_D_BIT             0x10    /* Obsolete, usage unknown */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) #define MPPE_L_BIT             0x20    /* 40-bit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) #define MPPE_S_BIT             0x40    /* 128-bit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) #define MPPE_M_BIT             0x80    /* 56-bit, not supported */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) #define MPPE_H_BIT             0x01    /* Stateless (in a different byte) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) /* Does not include H bit; used for least significant octet only. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) #define MPPE_ALL_BITS (MPPE_D_BIT|MPPE_L_BIT|MPPE_S_BIT|MPPE_M_BIT|MPPE_H_BIT)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) /* Build a CI from mppe opts (see RFC 3078) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) #define MPPE_OPTS_TO_CI(opts, ci)              \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)     do {                                       \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36)        u_char *ptr = ci; /* u_char[4] */       \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37)                                                \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38)        /* H bit */                             \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39)        if (opts & MPPE_OPT_STATEFUL)           \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)            *ptr++ = 0x0;                       \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)        else                                    \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42)            *ptr++ = MPPE_H_BIT;                \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43)        *ptr++ = 0;                             \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44)        *ptr++ = 0;                             \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45)                                                \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46)        /* S,L bits */                          \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47)        *ptr = 0;                               \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48)        if (opts & MPPE_OPT_128)                \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49)            *ptr |= MPPE_S_BIT;                 \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50)        if (opts & MPPE_OPT_40)                 \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51)            *ptr |= MPPE_L_BIT;                 \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52)        /* M,D,C bits not supported */          \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)     } while (/* CONSTCOND */ 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) /* The reverse of the above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) #define MPPE_CI_TO_OPTS(ci, opts)              \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57)     do {                                       \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58)        u_char *ptr = ci; /* u_char[4] */       \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59)                                                \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60)        opts = 0;                               \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61)                                                \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62)        /* H bit */                             \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63)        if (!(ptr[0] & MPPE_H_BIT))             \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64)            opts |= MPPE_OPT_STATEFUL;          \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65)                                                \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66)        /* S,L bits */                          \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67)        if (ptr[3] & MPPE_S_BIT)                \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68)            opts |= MPPE_OPT_128;               \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69)        if (ptr[3] & MPPE_L_BIT)                \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70)            opts |= MPPE_OPT_40;                \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71)                                                \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72)        /* M,D,C bits */                        \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73)        if (ptr[3] & MPPE_M_BIT)                \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74)            opts |= MPPE_OPT_56;                \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75)        if (ptr[3] & MPPE_D_BIT)                \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76)            opts |= MPPE_OPT_D;                 \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77)        if (ptr[3] & MPPE_C_BIT)                \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78)            opts |= MPPE_OPT_MPPC;              \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79)                                                \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80)        /* Other bits */                        \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81)        if (ptr[0] & ~MPPE_H_BIT)               \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82)            opts |= MPPE_OPT_UNKNOWN;           \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83)        if (ptr[1] || ptr[2])                   \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84)            opts |= MPPE_OPT_UNKNOWN;           \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85)        if (ptr[3] & ~MPPE_ALL_BITS)            \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86)            opts |= MPPE_OPT_UNKNOWN;           \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87)     } while (/* CONSTCOND */ 0)