--------------------- PatchSet 8791 Date: 2006/12/03 12:24:56 Author: adri Branch: s26_wccp2 Tag: (none) Log: * the 'info' struct in the service list struct is now not being written out directly to the client; so keep everything there stored in host order and translate when we generate the outbound packet. * Attempt to write the mask assignment stuff out (but it still doesn't work.) Members: src/wccp2.c:1.26.2.5->1.26.2.6 Index: squid/src/wccp2.c =================================================================== RCS file: /cvsroot/squid-sf//squid/src/wccp2.c,v retrieving revision 1.26.2.5 retrieving revision 1.26.2.6 diff -u -r1.26.2.5 -r1.26.2.6 --- squid/src/wccp2.c 3 Dec 2006 11:37:12 -0000 1.26.2.5 +++ squid/src/wccp2.c 3 Dec 2006 12:24:56 -0000 1.26.2.6 @@ -1,6 +1,6 @@ /* - * $Id: wccp2.c,v 1.26.2.5 2006/12/03 11:37:12 adri Exp $ + * $Id: wccp2.c,v 1.26.2.6 2006/12/03 12:24:56 adri Exp $ * * DEBUG: section 80 WCCP Support * AUTHOR: Steven WIlton @@ -373,6 +373,8 @@ void wccp2_out_add_hash_assignment_info(struct wccp2_out_packet_t *p, struct wccp2_service_list_t *sl, struct wccp2_router_list_t *rl); +void wccp2_out_add_mask_assignment_info(struct wccp2_out_packet_t *p, struct wccp2_service_list_t *sl, + struct wccp2_router_list_t *rl); int empty_portlist[WCCP2_NUMPORTS] = {0, 0, 0, 0, 0, 0, 0, 0}; @@ -416,20 +418,19 @@ int service_id, int service_priority, int service_proto, int service_flags, int ports[]) { - /* XXX check what needs to be wrapped in htons()! */ srv->info.service = service; srv->info.service_id = service_id; srv->info.service_priority = service_priority; srv->info.service_protocol = service_proto; - srv->info.service_flags = htonl(service_flags); - srv->info.port0 = htons(ports[0]); - srv->info.port1 = htons(ports[1]); - srv->info.port2 = htons(ports[2]); - srv->info.port3 = htons(ports[3]); - srv->info.port4 = htons(ports[4]); - srv->info.port5 = htons(ports[5]); - srv->info.port6 = htons(ports[6]); - srv->info.port7 = htons(ports[7]); + srv->info.service_flags = service_flags; + srv->info.port0 = ports[0]; + srv->info.port1 = ports[1]; + srv->info.port2 = ports[2]; + srv->info.port3 = ports[3]; + srv->info.port4 = ports[4]; + srv->info.port5 = ports[5]; + srv->info.port6 = ports[6]; + srv->info.port7 = ports[7]; } void @@ -1153,7 +1154,11 @@ wccp2_out_add_service_info(&op, &service_list_ptr->info); if (Config.Wccp2.assignment_method == WCCP2_ASSIGNMENT_METHOD_HASH) { wccp2_out_add_hash_assignment_info(&op, service_list_ptr, router_list_ptr); - } + } else if (Config.Wccp2.assignment_method == WCCP2_ASSIGNMENT_METHOD_MASK) { + wccp2_out_add_mask_assignment_info(&op, service_list_ptr, router_list_ptr); + } else { + fatalf("WCCP2 unknown assignment_method!\n"); + } /* Finish packet */ wccp2_out_packet_finish(&op);