@@ -1023,62 +1023,14 @@ static int cmd_neigh_show(struct ctx *ctx, int argc, const char **argv)
1023
1023
return 0 ;
1024
1024
}
1025
1025
1026
- struct mctp_neighalter_msg {
1027
- struct nlmsghdr nh ;
1028
- struct ndmsg ndmsg ;
1029
- uint8_t rta_buff [RTA_SPACE (1 ) + RTA_SPACE (MAX_ADDR_LEN )];
1030
- };
1031
-
1032
- static int fill_neighalter_args (struct ctx * ctx ,
1033
- struct mctp_neighalter_msg * msg ,
1034
- struct rtattr * * prta , size_t * prta_len ,
1035
- const char * eidstr , const char * linkstr ) {
1036
- struct rtattr * rta ;
1037
- uint32_t tmp ;
1038
- uint8_t eid ;
1039
- int ifindex ;
1040
- size_t rta_len ;
1041
-
1042
- ifindex = mctp_nl_ifindex_byname (ctx -> nl , linkstr );
1043
- if (!ifindex ) {
1044
- warnx ("invalid device %s" , linkstr );
1045
- return -1 ;
1046
- }
1047
-
1048
- if (parse_uint32 (eidstr , & tmp ) < 0 || tmp > 0xff ) {
1049
- warnx ("invalid address %s" , eidstr );
1050
- return -1 ;
1051
- }
1052
- eid = tmp & 0xff ;
1053
-
1054
- memset (msg , 0x0 , sizeof (* msg ));
1055
- msg -> nh .nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK ;
1056
- msg -> ndmsg .ndm_ifindex = ifindex ;
1057
- msg -> ndmsg .ndm_family = AF_MCTP ;
1058
-
1059
- msg -> nh .nlmsg_len = NLMSG_LENGTH (sizeof (msg -> ndmsg ));
1060
- rta_len = sizeof (msg -> rta_buff );
1061
- rta = (void * )msg -> rta_buff ;
1062
-
1063
- msg -> nh .nlmsg_len += mctp_put_rtnlmsg_attr (& rta , & rta_len ,
1064
- NDA_DST , & eid , sizeof (eid ));
1065
-
1066
-
1067
- if (prta )
1068
- * prta = rta ;
1069
- if (prta_len )
1070
- * prta_len = rta_len ;
1071
- return 0 ;
1072
- }
1073
-
1074
1026
static int cmd_neigh_add (struct ctx * ctx , int argc , const char * * argv )
1075
1027
{
1076
- struct mctp_neighalter_msg msg ;
1077
- struct rtattr * rta ;
1078
1028
const char * linkstr , * eidstr , * lladdrstr ;
1079
- int rc ;
1080
1029
uint8_t llbuf [MAX_ADDR_LEN ];
1081
- size_t llbuf_len , rta_len ;
1030
+ size_t llbuf_len ;
1031
+ mctp_eid_t eid ;
1032
+ uint32_t tmp ;
1033
+ int rc ;
1082
1034
1083
1035
rc = 0 ;
1084
1036
if (argc != 6 ) {
@@ -1107,22 +1059,20 @@ static int cmd_neigh_add(struct ctx *ctx, int argc, const char **argv)
1107
1059
return rc ;
1108
1060
}
1109
1061
1110
- rc = fill_neighalter_args (ctx , & msg , & rta , & rta_len ,
1111
- eidstr , linkstr );
1112
- if (rc ) {
1062
+ if (parse_uint32 (eidstr , & tmp ) < 0 || tmp > 0xff ) {
1063
+ warnx ("invalid address %s" , eidstr );
1113
1064
return -1 ;
1114
1065
}
1066
+ eid = tmp & 0xff ;
1115
1067
1116
- msg .nh .nlmsg_type = RTM_NEWNEIGH ;
1117
- msg .nh .nlmsg_len += mctp_put_rtnlmsg_attr (& rta , & rta_len ,
1118
- NDA_LLADDR , llbuf , llbuf_len );
1119
- return mctp_nl_send (ctx -> nl , & msg .nh );
1068
+ return mctp_nl_neigh_add (ctx -> nl , eid , linkstr , llbuf , llbuf_len );
1120
1069
}
1121
1070
1122
1071
static int cmd_neigh_del (struct ctx * ctx , int argc , const char * * argv )
1123
1072
{
1124
- struct mctp_neighalter_msg msg ;
1125
1073
const char * linkstr , * eidstr ;
1074
+ mctp_eid_t eid ;
1075
+ uint32_t tmp ;
1126
1076
int rc ;
1127
1077
1128
1078
rc = 0 ;
@@ -1141,14 +1091,13 @@ static int cmd_neigh_del(struct ctx *ctx, int argc, const char **argv)
1141
1091
eidstr = argv [1 ];
1142
1092
linkstr = argv [3 ];
1143
1093
1144
- rc = fill_neighalter_args (ctx , & msg , NULL , NULL ,
1145
- eidstr , linkstr );
1146
- if (rc ) {
1094
+ if (parse_uint32 (eidstr , & tmp ) < 0 || tmp > 0xff ) {
1095
+ warnx ("invalid address %s" , eidstr );
1147
1096
return -1 ;
1148
1097
}
1098
+ eid = tmp & 0xff ;
1149
1099
1150
- msg .nh .nlmsg_type = RTM_DELNEIGH ;
1151
- return mctp_nl_send (ctx -> nl , & msg .nh );
1100
+ return mctp_nl_neigh_del (ctx -> nl , eid , linkstr );
1152
1101
}
1153
1102
1154
1103
static int cmd_neigh (struct ctx * ctx , int argc , const char * * argv ) {
0 commit comments