Navigation


Changeset 1136:140450615773 in freeDiameter for libfdproto


Ignore:
Timestamp:
May 16, 2013, 3:56:31 PM (11 years ago)
Author:
Sebastien Decugis <sdecugis@freediameter.net>
Branch:
default
Phase:
public
Message:

Revert changeset 1122 (ADDRESS_AVP_INCLUDE_PORT) as this will create too much interop issues. The Host-IP-Address AVP is not normally used to discover peer address, but only for validation of the addresses where a packet is received from -- which is quite useless with a connected transport connection, but anyway...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libfdproto/dictionary_functions.c

    r1122 r1136  
    7474                                AddressType = 1;/* see http://www.iana.org/assignments/address-family-numbers/ */
    7575                                size = 6;       /* 2 for AddressType + 4 for data */
    76                                 #ifdef ADDRESS_AVP_INCLUDE_PORT
    77                                 if (sin->sin_port != 0)
    78                                         size += 2;
    79                                 #endif /* ADDRESS_AVP_INCLUDE_PORT */
    8076                               
    8177                                CHECK_MALLOC(  buf = malloc(size)  );
     
    8379                                /* may not work because of alignment: *(uint32_t *)(buf+2) = htonl(sin->sin_addr.s_addr); */
    8480                                memcpy(buf + 2, &sin->sin_addr.s_addr, 4);
    85                                
    86                                 #ifdef ADDRESS_AVP_INCLUDE_PORT
    87                                 if (sin->sin_port != 0)
    88                                         memcpy(buf + 6, &sin->sin_port, 2);
    89                                 #endif /* ADDRESS_AVP_INCLUDE_PORT */
    9081                        }
    9182                        break;
     
    9889                                AddressType = 2;/* see http://www.iana.org/assignments/address-family-numbers/ */
    9990                                size = 18;      /* 2 for AddressType + 16 for data */
    100                                 #ifdef ADDRESS_AVP_INCLUDE_PORT
    101                                 if (sin6->sin6_port != 0)
    102                                         size += 2;
    103                                 #endif /* ADDRESS_AVP_INCLUDE_PORT */
    10491                               
    10592                                CHECK_MALLOC(  buf = malloc(size)  );
     
    10895                                memcpy(buf + 2, &sin6->sin6_addr.s6_addr, 16);
    10996                               
    110                                 #ifdef ADDRESS_AVP_INCLUDE_PORT
    111                                 if (sin6->sin6_port != 0)
    112                                         memcpy(buf + 18, &sin6->sin6_port, 2);
    113                                 #endif /* ADDRESS_AVP_INCLUDE_PORT */
    11497                        }
    11598                        break;
     
    144127                                sSA4 * sin = (sSA4 *)interpreted;
    145128                               
    146                                 CHECK_PARAMS(  avp_value->os.len >= 6  );
     129                                CHECK_PARAMS(  avp_value->os.len == 6  );
    147130                               
    148131                                sin->sin_family = AF_INET;
    149132                                /* sin->sin_addr.s_addr = ntohl( * (uint32_t *) buf); -- may not work because of bad alignment */
    150133                                memcpy(&sin->sin_addr.s_addr, buf, 4);
    151                                
    152                                 if (avp_value->os.len == 8)
    153                                         memcpy(&sin->sin_port, buf + 4, 2);
    154134                        }
    155135                        break;
     
    159139                                sSA6 * sin6 = (sSA6 *)interpreted;
    160140                               
    161                                 CHECK_PARAMS(  avp_value->os.len >= 18  );
     141                                CHECK_PARAMS(  avp_value->os.len == 18  );
    162142                               
    163143                                sin6->sin6_family = AF_INET6;
    164144                                memcpy(&sin6->sin6_addr.s6_addr, buf, 16);
    165                                
    166                                 if (avp_value->os.len == 20)
    167                                         memcpy(&sin6->sin6_port, buf + 16, 2);
    168145                               
    169146                        }
Note: See TracChangeset for help on using the changeset viewer.