Provide a method to send a management error status message.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
This commit is contained in:
		
							parent
							
								
									f233528ea4
								
							
						
					
					
						commit
						21c2fe30c7
					
				
							
								
								
									
										32
									
								
								port.c
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								port.c
									
									
									
									
									
								
							| @ -1390,6 +1390,38 @@ int port_manage(struct port *p, struct port *ingress, struct ptp_message *msg) | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| int port_managment_error(struct PortIdentity pid, struct port *ingress, | ||||
| 			 struct ptp_message *req, Enumeration16 error_id) | ||||
| { | ||||
| 	struct ptp_message *msg; | ||||
| 	struct management_tlv *mgt; | ||||
| 	struct management_error_status *mes; | ||||
| 	int err = 0, pdulen; | ||||
| 
 | ||||
| 	msg = port_management_reply(pid, ingress, req); | ||||
| 	if (!msg) { | ||||
| 		return -1; | ||||
| 	} | ||||
| 	mgt = (struct management_tlv *) req->management.suffix; | ||||
| 	mes = (struct management_error_status *) msg->management.suffix; | ||||
| 	mes->type = TLV_MANAGEMENT_ERROR_STATUS; | ||||
| 	mes->length = 8; | ||||
| 	mes->error = error_id; | ||||
| 	mes->id = mgt->id; | ||||
| 	pdulen = msg->header.messageLength + sizeof(*mes); | ||||
| 	msg->header.messageLength = pdulen; | ||||
| 	msg->tlv_count = 1; | ||||
| 
 | ||||
| 	err = msg_pre_send(msg); | ||||
| 	if (err) { | ||||
| 		goto out; | ||||
| 	} | ||||
| 	err = port_forward(ingress, msg, pdulen); | ||||
| out: | ||||
| 	msg_put(msg); | ||||
| 	return err; | ||||
| } | ||||
| 
 | ||||
| struct ptp_message *port_management_reply(struct PortIdentity pid, | ||||
| 					  struct port *ingress, | ||||
| 					  struct ptp_message *req) | ||||
|  | ||||
							
								
								
									
										11
									
								
								port.h
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								port.h
									
									
									
									
									
								
							| @ -97,6 +97,17 @@ int port_forward(struct port *p, struct ptp_message *msg, int msglen); | ||||
|  */ | ||||
| int port_manage(struct port *p, struct port *ingress, struct ptp_message *msg); | ||||
| 
 | ||||
| /**
 | ||||
|  * Send a management error status message. | ||||
|  * @param pid       The id of the responding port. | ||||
|  * @param ingress   Port on which the 'req' was received. | ||||
|  * @param req       The management message which triggered the error. | ||||
|  * @param error_id  One of the management error ID values. | ||||
|  * @return          Zero on success, non-zero otherwise. | ||||
|  */ | ||||
| int port_managment_error(struct PortIdentity pid, struct port *ingress, | ||||
| 			 struct ptp_message *req, Enumeration16 error_id); | ||||
| 
 | ||||
| /**
 | ||||
|  * Allocate a reply to a management message. | ||||
|  * | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user